• Skip to content
  • Skip to link menu
KDE 4.3 API Reference
  • KDE API Reference
  • kdelibs
  • Sitemap
  • Contact Us
 

KDECore

klocalizedstring.h

Go to the documentation of this file.
00001 /*  This file is part of the KDE libraries
00002     Copyright (C) 2006 Chusslove Illich <caslav.ilic@gmx.net>
00003 
00004     This library is free software; you can redistribute it and/or
00005     modify it under the terms of the GNU Library General Public
00006     License as published by the Free Software Foundation; either
00007     version 2 of the License, or (at your option) any later version.
00008 
00009     This library is distributed in the hope that it will be useful,
00010     but WITHOUT ANY WARRANTY; without even the implied warranty of
00011     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012     Library General Public License for more details.
00013 
00014     You should have received a copy of the GNU Library General Public License
00015     along with this library; see the file COPYING.LIB.  If not, write to
00016     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00017     Boston, MA 02110-1301, USA.
00018 */
00019 #ifndef KLOCALIZEDSTRING_H
00020 #define KLOCALIZEDSTRING_H
00021 
00022 #include <kdecore_export.h>
00023 
00024 
00025 #include <QtCore/QChar>
00026 #include <QtCore/QLatin1Char>
00027 #include <QtCore/QStringList>
00028 
00029 class KLocale;
00030 struct KCatalogName;
00031 class KLocalizedStringPrivate;
00032 
00037 #ifndef I18N_NOOP
00038 
00051 #define I18N_NOOP(x) x
00052 #endif
00053 
00054 #ifndef I18N_NOOP2
00055 
00072 #define I18N_NOOP2(comment,x) x
00073 #endif
00074 
00075 #ifndef I18N_NOOP2_NOSTRIP
00076 
00102 #define I18N_NOOP2_NOSTRIP(ctxt, text) ctxt, text
00103 #endif
00104 
00288 class KDECORE_EXPORT KLocalizedString
00289 {
00290 
00291     friend KLocalizedString KDECORE_EXPORT ki18n (const char* msg);
00292     friend KLocalizedString KDECORE_EXPORT ki18nc (const char *ctxt, const char *msg);
00293     friend KLocalizedString KDECORE_EXPORT ki18np (const char *singular, const char *plural);
00294     friend KLocalizedString KDECORE_EXPORT ki18ncp (const char *ctxt,
00295                                      const char *singular, const char *plural);
00296 
00297 public:
00305     explicit KLocalizedString ();
00306 
00310     KLocalizedString (const KLocalizedString &rhs);
00311 
00315     KLocalizedString& operator= (const KLocalizedString &rhs);
00316 
00320     ~KLocalizedString ();
00321 
00331     QString toString () const;
00332 
00344     QString toString (const KLocale *locale) const;
00345 
00355     bool isEmpty() const;
00356 
00369     KLocalizedString subs (int a, int fieldWidth = 0, int base = 10,
00370                            const QChar &fillChar = QLatin1Char(' ')) const;
00371 
00384     KLocalizedString subs (uint a, int fieldWidth = 0, int base = 10,
00385                            const QChar &fillChar = QLatin1Char(' ')) const;
00386 
00399     KLocalizedString subs (long a, int fieldWidth = 0, int base = 10,
00400                            const QChar &fillChar = QLatin1Char(' ')) const;
00401 
00414     KLocalizedString subs (ulong a, int fieldWidth = 0, int base = 10,
00415                            const QChar &fillChar = QLatin1Char(' ')) const;
00416 
00429     KLocalizedString subs (qlonglong a, int fieldWidth = 0, int base = 10,
00430                            const QChar &fillChar = QLatin1Char(' ')) const;
00431 
00444     KLocalizedString subs (qulonglong a, int fieldWidth = 0, int base = 10,
00445                            const QChar &fillChar = QLatin1Char(' ')) const;
00446 
00459     KLocalizedString subs (double a, int fieldWidth = 0,
00460                            char format = 'g', int precision = -1,
00461                            const QChar &fillChar = QLatin1Char(' ')) const;
00462 
00473     KLocalizedString subs (QChar a, int fieldWidth = 0,
00474                            const QChar &fillChar = QLatin1Char(' ')) const;
00475 
00486     KLocalizedString subs (const QString &a, int fieldWidth = 0,
00487                            const QChar &fillChar = QLatin1Char(' ')) const;
00488 
00496     KLocalizedString inContext (const QString &key,
00497                                 const QString &text) const;
00498 
00502     static void notifyCatalogsUpdated (const QStringList &languages,
00503                                        const QList<KCatalogName> &catalogs);
00504 
00505 private:
00506     KLocalizedString (const char *ctxt,
00507                       const char *msg, const char *plural);
00508 
00509     KLocalizedStringPrivate * const d;
00510 };
00511 
00521 extern KLocalizedString KDECORE_EXPORT ki18n (const char* msg);
00522 
00535 extern KLocalizedString KDECORE_EXPORT ki18nc (const char *ctxt, const char *msg);
00536 
00547 extern KLocalizedString KDECORE_EXPORT ki18np (const char *singular, const char *plural);
00548 
00563 extern KLocalizedString KDECORE_EXPORT ki18ncp (const char *ctxt, const char *singular, const char *plural);
00564 
00570 inline QString tr2i18n (const char *message, const char *comment = 0) {
00571     if (comment && comment[0] && message && message[0]) {
00572         return ki18nc(comment, message).toString();
00573     }
00574     else if (message && message[0]) {
00575         return ki18n(message).toString();
00576     }
00577     else {
00578         return QString();
00579     }
00580 }
00581 
00582 #ifndef NDEBUG
00583 #define I18N_ERR_MSG String_literal_as_second_argument_to_i18n___Perhaps_you_need_i18nc_or_i18np
00584 template <typename T, int s> class I18nTypeCheck {public: static void I18N_ERR_MSG () {}};
00585 template <int s> class I18nTypeCheck<char[s], s> {};
00586 #define STATIC_ASSERT_NOT_LITERAL_STRING(T) I18nTypeCheck<T, sizeof(T)>::I18N_ERR_MSG ();
00587 #else
00588 #define STATIC_ASSERT_NOT_LITERAL_STRING(T)
00589 #endif
00590 
00591 // >>>>> Basic calls
00592 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00598 inline QString i18n (const char *text)
00599 {
00600   return ki18n(text).toString();
00601 }
00602 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00609 template <typename A1>
00610 inline QString i18n (const char *text, const A1 &a1)
00611 {
00612   STATIC_ASSERT_NOT_LITERAL_STRING(A1)
00613   return ki18n(text).subs(a1).toString();
00614 }
00615 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00623 template <typename A1, typename A2>
00624 inline QString i18n (const char *text, const A1 &a1, const A2 &a2)
00625 {
00626   STATIC_ASSERT_NOT_LITERAL_STRING(A1)
00627   return ki18n(text).subs(a1).subs(a2).toString();
00628 }
00629 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00638 template <typename A1, typename A2, typename A3>
00639 inline QString i18n (const char *text, const A1 &a1, const A2 &a2, const A3 &a3)
00640 {
00641   STATIC_ASSERT_NOT_LITERAL_STRING(A1)
00642   return ki18n(text).subs(a1).subs(a2).subs(a3).toString();
00643 }
00644 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00654 template <typename A1, typename A2, typename A3, typename A4>
00655 inline QString i18n (const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
00656 {
00657   STATIC_ASSERT_NOT_LITERAL_STRING(A1)
00658   return ki18n(text).subs(a1).subs(a2).subs(a3).subs(a4).toString();
00659 }
00660 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00671 template <typename A1, typename A2, typename A3, typename A4, typename A5>
00672 inline QString i18n (const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
00673 {
00674   STATIC_ASSERT_NOT_LITERAL_STRING(A1)
00675   return ki18n(text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
00676 }
00677 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00689 template <typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
00690 inline QString i18n (const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6)
00691 {
00692   STATIC_ASSERT_NOT_LITERAL_STRING(A1)
00693   return ki18n(text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
00694 }
00695 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00708 template <typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
00709 inline QString i18n (const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7)
00710 {
00711   STATIC_ASSERT_NOT_LITERAL_STRING(A1)
00712   return ki18n(text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
00713 }
00714 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00728 template <typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
00729 inline QString i18n (const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8)
00730 {
00731   STATIC_ASSERT_NOT_LITERAL_STRING(A1)
00732   return ki18n(text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
00733 }
00734 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00749 template <typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
00750 inline QString i18n (const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8, const A9 &a9)
00751 {
00752   STATIC_ASSERT_NOT_LITERAL_STRING(A1)
00753   return ki18n(text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
00754 }
00755 // <<<<<<< End of basic calls
00756 
00757 // >>>>> Context calls
00758 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00765 inline QString i18nc (const char *ctxt, const char *text)
00766 {
00767   return ki18nc(ctxt, text).toString();
00768 }
00769 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00777 template <typename A1>
00778 inline QString i18nc (const char *ctxt, const char *text, const A1 &a1)
00779 {
00780   return ki18nc(ctxt, text).subs(a1).toString();
00781 }
00782 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00791 template <typename A1, typename A2>
00792 inline QString i18nc (const char *ctxt, const char *text, const A1 &a1, const A2 &a2)
00793 {
00794   return ki18nc(ctxt, text).subs(a1).subs(a2).toString();
00795 }
00796 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00806 template <typename A1, typename A2, typename A3>
00807 inline QString i18nc (const char *ctxt, const char *text, const A1 &a1, const A2 &a2, const A3 &a3)
00808 {
00809   return ki18nc(ctxt, text).subs(a1).subs(a2).subs(a3).toString();
00810 }
00811 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00822 template <typename A1, typename A2, typename A3, typename A4>
00823 inline QString i18nc (const char *ctxt, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
00824 {
00825   return ki18nc(ctxt, text).subs(a1).subs(a2).subs(a3).subs(a4).toString();
00826 }
00827 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00839 template <typename A1, typename A2, typename A3, typename A4, typename A5>
00840 inline QString i18nc (const char *ctxt, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
00841 {
00842   return ki18nc(ctxt, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
00843 }
00844 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00857 template <typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
00858 inline QString i18nc (const char *ctxt, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6)
00859 {
00860   return ki18nc(ctxt, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
00861 }
00862 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00876 template <typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
00877 inline QString i18nc (const char *ctxt, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7)
00878 {
00879   return ki18nc(ctxt, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
00880 }
00881 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00896 template <typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
00897 inline QString i18nc (const char *ctxt, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8)
00898 {
00899   return ki18nc(ctxt, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
00900 }
00901 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00917 template <typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
00918 inline QString i18nc (const char *ctxt, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8, const A9 &a9)
00919 {
00920   return ki18nc(ctxt, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
00921 }
00922 // <<<<< End of context calls
00923 
00924 // >>>>> Plural calls
00925 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00933 template <typename A1>
00934 inline QString i18np (const char *sing, const char *plur, const A1 &a1)
00935 {
00936   return ki18np(sing, plur).subs(a1).toString();
00937 }
00938 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00947 template <typename A1, typename A2>
00948 inline QString i18np (const char *sing, const char *plur, const A1 &a1, const A2 &a2)
00949 {
00950   return ki18np(sing, plur).subs(a1).subs(a2).toString();
00951 }
00952 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00962 template <typename A1, typename A2, typename A3>
00963 inline QString i18np (const char *sing, const char *plur, const A1 &a1, const A2 &a2, const A3 &a3)
00964 {
00965   return ki18np(sing, plur).subs(a1).subs(a2).subs(a3).toString();
00966 }
00967 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00978 template <typename A1, typename A2, typename A3, typename A4>
00979 inline QString i18np (const char *sing, const char *plur, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
00980 {
00981   return ki18np(sing, plur).subs(a1).subs(a2).subs(a3).subs(a4).toString();
00982 }
00983 // Autogenerated; contact KLocalizedString maintainer for batch changes.
00995 template <typename A1, typename A2, typename A3, typename A4, typename A5>
00996 inline QString i18np (const char *sing, const char *plur, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
00997 {
00998   return ki18np(sing, plur).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
00999 }
01000 // Autogenerated; contact KLocalizedString maintainer for batch changes.
01013 template <typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
01014 inline QString i18np (const char *sing, const char *plur, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6)
01015 {
01016   return ki18np(sing, plur).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
01017 }
01018 // Autogenerated; contact KLocalizedString maintainer for batch changes.
01032 template <typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
01033 inline QString i18np (const char *sing, const char *plur, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7)
01034 {
01035   return ki18np(sing, plur).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
01036 }
01037 // Autogenerated; contact KLocalizedString maintainer for batch changes.
01052 template <typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
01053 inline QString i18np (const char *sing, const char *plur, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8)
01054 {
01055   return ki18np(sing, plur).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
01056 }
01057 // Autogenerated; contact KLocalizedString maintainer for batch changes.
01073 template <typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
01074 inline QString i18np (const char *sing, const char *plur, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8, const A9 &a9)
01075 {
01076   return ki18np(sing, plur).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
01077 }
01078 // <<<<< End of plural calls
01079 
01080 // >>>>> Context-plural calls
01081 // Autogenerated; contact KLocalizedString maintainer for batch changes.
01090 template <typename A1>
01091 inline QString i18ncp (const char *ctxt, const char *sing, const char *plur, const A1 &a1)
01092 {
01093   return ki18ncp(ctxt, sing, plur).subs(a1).toString();
01094 }
01095 // Autogenerated; contact KLocalizedString maintainer for batch changes.
01105 template <typename A1, typename A2>
01106 inline QString i18ncp (const char *ctxt, const char *sing, const char *plur, const A1 &a1, const A2 &a2)
01107 {
01108   return ki18ncp(ctxt, sing, plur).subs(a1).subs(a2).toString();
01109 }
01110 // Autogenerated; contact KLocalizedString maintainer for batch changes.
01121 template <typename A1, typename A2, typename A3>
01122 inline QString i18ncp (const char *ctxt, const char *sing, const char *plur, const A1 &a1, const A2 &a2, const A3 &a3)
01123 {
01124   return ki18ncp(ctxt, sing, plur).subs(a1).subs(a2).subs(a3).toString();
01125 }
01126 // Autogenerated; contact KLocalizedString maintainer for batch changes.
01138 template <typename A1, typename A2, typename A3, typename A4>
01139 inline QString i18ncp (const char *ctxt, const char *sing, const char *plur, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
01140 {
01141   return ki18ncp(ctxt, sing, plur).subs(a1).subs(a2).subs(a3).subs(a4).toString();
01142 }
01143 // Autogenerated; contact KLocalizedString maintainer for batch changes.
01156 template <typename A1, typename A2, typename A3, typename A4, typename A5>
01157 inline QString i18ncp (const char *ctxt, const char *sing, const char *plur, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
01158 {
01159   return ki18ncp(ctxt, sing, plur).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
01160 }
01161 // Autogenerated; contact KLocalizedString maintainer for batch changes.
01175 template <typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
01176 inline QString i18ncp (const char *ctxt, const char *sing, const char *plur, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6)
01177 {
01178   return ki18ncp(ctxt, sing, plur).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
01179 }
01180 // Autogenerated; contact KLocalizedString maintainer for batch changes.
01195 template <typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
01196 inline QString i18ncp (const char *ctxt, const char *sing, const char *plur, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7)
01197 {
01198   return ki18ncp(ctxt, sing, plur).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
01199 }
01200 // Autogenerated; contact KLocalizedString maintainer for batch changes.
01216 template <typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
01217 inline QString i18ncp (const char *ctxt, const char *sing, const char *plur, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8)
01218 {
01219   return ki18ncp(ctxt, sing, plur).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
01220 }
01221 // Autogenerated; contact KLocalizedString maintainer for batch changes.
01238 template <typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
01239 inline QString i18ncp (const char *ctxt, const char *sing, const char *plur, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8, const A9 &a9)
01240 {
01241   return ki18ncp(ctxt, sing, plur).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
01242 }
01243 // <<<<< End of context-plural calls
01244 
01245 #endif

KDECore

Skip menu "KDECore"
  • Main Page
  • Modules
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

kdelibs

Skip menu "kdelibs"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • Kate
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Generated for kdelibs by doxygen 1.6.1
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal