https://techbase.kde.org/api.php?action=feedcontributions&user=Dcecile&feedformat=atomKDE TechBase - User contributions [en]2024-03-28T17:46:00ZUser contributionsMediaWiki 1.40.2https://techbase.kde.org/index.php?title=Development/Tutorials&diff=14629Development/Tutorials2007-10-13T17:08:40Z<p>Dcecile: blank space after plasma section</p>
<hr />
<div>{{Template:I18n/Language Navigation Bar|Development/Tutorials}}<br />
<br />
Tutorials are the fastest way of finding out what KDE will do for you, and how to do it. Here is a list of currently available tutorials '''for KDE4'''. Material for KDE3 and KDE2 is available on the bottom of this page.<br />
<br />
== Introduction To KDE 4 Programming ==<br />
Are you interested in writing applications with KDE 4? This tutorial series is aimed at those completely new to KDE programming.<br />
;[[Development/Tutorials/First program|Hello World]]<br />
:''A preliminary introduction to the very basics of KDE4 programming''<br />
<br />
;[[Development/Tutorials/Using KXmlGuiWindow|Creating the Main Window]]<br />
:''This tutorial shows you the magic of an application's most important thing: The main window.''<br />
<br />
;[[Development/Tutorials/Using KActions|Using KActions]]<br />
:''How to add actions to the menus and toolbars.''<br />
<br />
== Basics ==<br />
;[[Development/Tutorials/KDE4 Porting Guide|Porting Your Application]]<br />
:''Help Porting Applications from Qt3/KDE3 to Qt4/KDE4''<br />
<br />
;[[Development/Tutorials/CMake|Introduction to CMake]]<br />
:''How to use the CMake build system used by KDE4.''<br />
<br />
;[[Development/Tutorials/Common Programming Mistakes|Common Programming Mistakes]]<br />
:''Various common mistakes made while developing Qt and KDE applications and how to avoid them.''<br />
<br />
;[[Development/Tutorials/Using Qt Designer|Using Qt Designer to build user interfaces]]<br />
:''How to create UI files with designer, and how to integrate them into a KDE program.''<br />
<br />
;[[Development/Tutorials/Command-Line Options|Using Command-line Options]]<br />
:''Processing and accessing command-line arguments the easy way with KDE's command line arguments classes.''<br />
<br />
== Testing And Debugging ==<br />
<br />
;[[Development/Tutorials/Debugging|Debugging your application]]<br />
:''Tips, tools and techniques to apply when debugging your KDE application''<br />
<br />
;[[Development/Tutorials/Unittests|Writing Unittests for Qt4 and KDE4 with QTestLib]] ([http://developer.kde.org/documentation/tutorials/writingunittests/writingunittests.html Original link])<br />
:''Tutorial by [mailto:bradh@frogmouth.net Brad Hards] that describes how to write unit tests using the QTestLib framework. It is presented as an example based tutorial, and is still under development.''<br />
<br />
;[[Development/Tutorials/Code_Checking|Semi-automatic ways to detect code errors]]<br />
:''Techniques you can use to detect errors in KDE code''<br />
<br />
== Managing Configuration Data With KConfig ==<br />
;[[Development/Tutorials/KConfig|Introduction To KConfig]]<br />
:''An overview of the KConfig classes and how to use them in your application code''<br />
<br />
;[[Development/Tutorials/Using KConfig XT|Using KConfig XT]]<br />
:''Tutorial on how to efficiently use the KConfig XT framework.''<br />
<br />
;[[Development/Tutorials/Updating KConfig Files|Updating KConfig Files]]<br />
:''Tutorial on how to write an update script to keep changes in your application's config file format in sync with the user's already existing config file''<br />
<br />
== Services: Applications and Plugins ==<br />
;[[Development/Tutorials/Services/Introduction|Introduction to the Services Framework]]<br />
:''An overview of the services framework in KDE and what it provides the application developer. Covers the system configuration cache (SyCoCa), the source data files and what the indexed information can be used for.''<br />
<br />
;[[Development/Tutorials/Services/Traders|Finding Services Using Trader Queries]]<br />
:''How to find services, such as plugins or mimetypes, that are indexed in the SyCoCa using Trader Query Syntax''<br />
<br />
;[[Development/Tutorials/Services/Plugins|Creating and Loading Plugins Using KService]]<br />
:''Learn how to define custom plugin types, find installed plugins (including 3rd party plugins) and load them in an easy and portable fashion using KService.''<br />
<br />
== Localization ==<br />
;[[Development/Tutorials/Localization/Unicode|Introduction To Unicode]]<br />
:''An introduction to what Unicode is as well as how to handle Unicode data in KDE applications.''<br />
<br />
; [[Development/Tutorials/Localization/i18n|Writing Applications With Localization In Mind]]<br />
:''This tutorial covers what localization is, why it's important and how to ensure your application is ready to be localized. A must read for all application developers.''<br />
<br />
; [[Development/Tutorials/Localization/i18n Mistakes|Avoiding Common Localization Pitfalls]]<br />
:''There are several common mistakes that prevent applications from being properly localized. Find out what they are and how to easily avoid them in this tutorial.''<br />
<br />
; [[Development/Tutorials/Localization/Building KDE's l10n Module|Building KDE's Localization Module]]<br />
:''Building and installing language support from KDE's localization (l10n) module is a good idea for those working on applications in the main KDE repository. Doing so will allow you to test your application in another language and spot problem areas. Learn how to do just that in this tutorial.''<br />
<br />
; [[Development/Tutorials/Localization/i18n Build Systems|Incorporating i18n Into the Build System]]<br />
:''Once your application is ready to be localized, the next step is to ensure that translation files are built automatically and kept up to date. This tutorial covers the necessary CMakeFiles.txt additions as well the process of distributing the resulting message catalogs with your application.''<br />
<br />
; [[Development/Tutorials/Localization/i18n Challenges|Common i18n Challenges and Solutions]]<br />
:''This tutorial covers challenges that you may eventually run into such as translating handbooks and other data that exists outside of the source code, merging and handling obsolete .po files, dealing with freezes, coding in languages other than English and creating independent releases of or moving applications between KDE modules.''<br />
<br />
; [[Development/Tutorials/Localization/i18n_Semantics|Semantic Markup of Messages]]<br />
:''To ensure consistent presentation and more meaningful representations of messages in applications, semantic markup can be applied to messages marked for translation using the KUIT system. This tutorial describes how this system works.''<br />
<br />
; [[Development/Tutorials/Localization/i18n Krazy|Automated i18n Code Checking]]<br />
:''The Krazy code checker scans KDE's code and reports common i18n mistakes.''<br />
<br />
== Documentation ==<br />
<br />
;[[Development/Tutorials/API_Documentation|API Documentation]]<br />
:''This tutorial explains how to document your APIs properly.''<br />
<br />
;[[Development/Tutorials/Man_Pages|Man Pages]]<br />
:''Writing and Generating Reference Manual Pages.''<br />
<br />
== Application Automation and Scripting ==<br />
<br />
=== D-Bus ===<br />
; [[Development/Tutorials/D-Bus/Introduction|Introduction to D-Bus]]<br />
:''A straight-forward introduction to the core concepts in D-Bus from an application developer's perspective, this tutorial covers what D-Bus is and how it can be used by applications.''<br />
; [[Development/Tutorials/D-Bus/Accessing Interfaces|Accessing D-Bus Interfaces]]<br />
:''A step-by-step guide to calling D-Bus methods and connecting to D-Bus signals using QtDBus.''<br />
; [[Development/Tutorials/D-Bus/Intermediate_D-Bus|Intermediate D-Bus]]<br />
:''Tips to make use of QtDBus when faced with problematic real-world interfaces.''<br />
; [[Development/Tutorials/D-Bus/Creating Interfaces|Creating D-Bus Interfaces]]<br />
:''Learn how to expose functionality in your application by creating and using custom D-Bus interfaces. Covers generating the XML descriptions, instantiating interfaces at run time and setting up the build system with CMake.''<br />
; [[Development/Tutorials/D-Bus/Autostart Services|D-Bus Autostart Services]]<br />
:''Turn your application into a D-Bus autostart service with this tutorial. This D-Bus feature, also known as "D-Bus service activation", will ensure that even when your application isn't running that D-Bus calls made to it will work by relying on the D-Bus daemon itself to start your app if and when needed.''<br />
; [[Development/Tutorials/Porting_to_D-Bus|Porting from DCOP to D-Bus]]<br />
: ''Port your applications from DCOP to D-Bus with this handy guide.''<br />
<br />
=== Konqueror ===<br />
; [[Development/Tutorials/Creating Konqueror Service Menus|Creating Konqueror Service Menus]]<br />
:''This tutorial shows you how to create mimetype-specific actions in Konqueror's context menu (aka "servicemenus").''<br />
<br />
=== Kross ===<br />
; [[Development/Tutorials/Kross/Introduction|Introduction to Kross]]<br />
:''An introduction to the Kross Scripting Framework.''<br />
<br />
; [[Development/Tutorials/Kross/Hello_World|Hello World]]<br />
:''A first application with working kross code.''<br />
<br />
; [[Development/Tutorials/Kross/Scripts-as-Plugins|Scripts as Plugins with Kross]]<br />
:''This tutorial provides a step-by-step introduction how to integrate scripts as plugins into a KDE application.''<br />
<br />
=== KOffice ===<br />
; [[Development/Tutorials/KOffice Overview]]<br />
:''This document shows an overview of the different KOffice plugin types and tells you what each of their purpose and strengths are.'' If you are new with KOffice plugins, this is the place to start.<br />
<br />
; [[Development/Tutorials/Write a Flake Plugin|Creating KOffice Flake Plugins]]<br />
:''This tutorial shows you how you can build a plugin for KOffice applications to allow you embed content in ODF documents using Flake.''<br />
<br />
; [[Development/Tutorials/KWord Scripting|KWord Scripting]]<br />
:''This tutorial shows how to script KWord with Python, Ruby or JavaScript using Kross.''<br />
<br />
; [[Development/Tutorials/KSpread Scripting|KSpread Scripting]]<br />
:''This tutorial shows how to script KSpread with Python, Ruby or JavaScript using Kross.''<br />
<br />
; [[Development/Tutorials/Krita Scripting|Krita Scripting]]<br />
:''This tutorial shows how to script Krita with Python, Ruby or JavaScript using Kross.''<br />
<br />
=== SuperKaramba ===<br />
; [[Development/Tutorials/SuperKaramba|SuperKaramba Tutorial]]<br />
:''This tutorial provides an overview of SuperKaramba, theme files and scripting with Python, Ruby and JavaScript.''<br />
<br />
== Search and Metadata ==<br />
<br />
=== Strigi ===<br />
<br />
; [[Development/Tutorials/Writing file analyzers|Writing file analyzers]]<br />
:''File analyzers extract data from files to display in the file dialogs and file managers. The data gathered this way is also used to search for files. KDE4 allows the use of multiple analyzers per file type. This tutorial describes how you can write new analyzers.''<br />
<br />
=== Nepomuk ===<br />
<br />
; [[Development/Tutorials/Metadata/KMetaData first steps|Nepomuk first steps]]<br />
:''Nepomuk is the KDE library which provides easy access to metadata in the [http://nepomuk-kde.semanticdesktop.org Nepomuk-KDE] system. Learn how to make your application create and read metadata using the Nepomuk system.''<br />
<br />
== Hardware Awareness (Solid) ==<br />
<br />
;[[Development/Tutorials/Solid_Tutorials|Introduction to Solid]]<br />
:''An introduction to using the Solid hardware discovery and interaction system in KDE applications.''<br />
<br />
;[[Development/Tutorials/Solid_Network_Tutorial|Accessing Network Information]]<br />
:''How to use the Solid system to get information about the network''<br />
<br />
== Multimedia (Phonon) ==<br />
<br />
;[[Development/Tutorials/Phonon/Introduction|Phonon]]<br />
:''How to start with the multimedia API''<br />
<br />
== Plasma ==<br />
<br />
;[[Development/Tutorials/Plasma/GettingStarted|Getting Started With Plasmoids]]<br />
:''Creating your first plasmoid in C++ with SVG background, icon and text''<br />
<br />
== Kate / Kwrite ==<br />
<br />
;[[Development/Tutorials/Kate/WriteYourFirstPlugin|Getting Started With Plugins]]<br />
:''Creating your first plugin''<br />
<br />
==Printing==<br />
<br />
;[[Development/Tutorials/Printing Hello World|Hello World]]<br />
:''Introduction to the KDE printing system''<br />
<br />
;TODO Print Dialog<br />
:''Using the KDE print dialog''<br />
<br />
== Get Hot New Stuff ==<br />
; [[Development/Tutorials/Introduction to Get Hot New Stuff|Introduction to Get Hot New Stuff]]<br />
:''An introduction to the developer-friendly network update system that allows KDE applications to fetch new application data at runtime in a user friendly manner.''<br />
<br />
;[[Development/Tutorials/KNewStuffSecure|KNewStuff Secure]] ([http://developer.kde.org/documentation/tutorials/knewstuffsecure/index.html Original Link])<br />
:''Tutorial showing how to share resources in a secured way (KDE 3.4 and later).'' By Andr&#225;s Mantia &lt;amantia@kde.org&gt;.<br />
<br />
== Rapid Application Development ==<br />
<br />
=== Python ===<br />
<br />
;[[Development/Tutorials/Python introduction to signals and slots|101 Introduction to signals and slots]]<br />
:''A simple introduction to Qt's signal and slot architecture.''<br />
<br />
=== Ruby ===<br />
<br />
;[http://developer.kde.org/language-bindings/ruby/kde3tutorial/index.html KDE Ruby Korundum tutorial]<br />
:''A ruby version of Antonio Larrosa Jim&eacute;nez's KDE tutorial by Richard Dale. See the [http://developer.kde.org/language-bindings/ruby/index.html Ruby Developers Corner] for Qt tutorials and other info.''<br />
<br />
;[[Development/Tutorials/Qt4_Ruby_Tutorial|Qt4 Ruby Tutorial]]<br />
:''Trolltech's fabulous introductory tutorial to Qt, translated to Ruby.''<br />
<br />
=== Shell ===<br />
<br />
;[[Development/Tutorials/Shell_Scripting_with_KDE_Dialogs|Shell Scripting with KDE dialogs]] ([http://developer.kde.org/documentation/tutorials/kdialog/t1.html Original Link]) <br />
:''Tutorial by [mailto:bradh@frogmouth.net Brad Hards] that describes how to use KDE dialogs in shell scripts with kdialog. It is presented as an example based tutorial.''<br />
<br />
== Other tutorials ==<br />
<br />
=== Using the KDE Games Library ===<br />
;[[Development/Tutorials/Games/KStandardGameAction| KStandardGameAction]]<br />
:''Using libkdegames to make your game fit the kdegames standard''<br />
;[[Development/Tutorials/Games/Highscores| Highscores]]<br />
:''Implementing a simple highscore table into your game''<br />
;[[Development/Tutorials/Games/Theme Selector| Theme Selector]]<br />
:''Using the libkdegames theme selection dialog''<br />
<br />
=== 2D Plotting (KPlotWidget) ===<br />
;[[Development/Tutorials/KPlotWidget|Using the KDE data-plotting widget]]<br />
:''This tutorial introduces KPlotWidget, which is used for 2-D data plotting. It includes information on simple usage of the widget (including adding and modifying data sets, and customizing the plot axes and labels), and advanced customization (including extending the widget through sub-classing).''<br />
<br />
=== Spelling and Grammar Checking (Sonnet) ===<br />
;[[Development/Tutorials/Sonnet/SonnetTutorial|Adding spell-checking or grammar-checking to KDE applications]]<br />
:''This tutorial introduces Sonnet and how one may use it to add language correction to your KDE application. Sonnet's auxiliary features shall be described in a separate tutorial.''<br />
<br />
=== Pixmap cache (KPixmapCache) ===<br />
;[[Development/Tutorials/KPixmapCache|Using the KDE pixmap cache]]<br />
:''This tutorial shows how to use KPixmapCache to cache e.g. pixmaps generated from SVGs or some data.''<br />
<br />
== KDE2 and KDE3 Materials ==<br />
<br />
;[[Development/Tutorials/KDE3|KDE3 Tutorials]]<br />
:''These tutorials cover topics related to KDE3.''<br />
<br />
;[[Development/Tutorials/KDE2|KDE2 Tutorials]]<br />
:''These tutorials cover topics related to KDE2.''<br />
<br />
[[Category:KDE4]]</div>Dcecilehttps://techbase.kde.org/index.php?title=User:Dcecile&diff=14628User:Dcecile2007-10-13T16:11:59Z<p>Dcecile: </p>
<hr />
<div>(unrelated development schedule: [[Schedules/KDE4/4.0_Release_Beta_Goals]])<br />
<br />
every part of the KDE libraries needs tutorial documentation. this is a survey. (note: the lists of modules could be taken from a release doc or something.....) tutorials should answer: "why would I use KDE over just QT?"<br />
<br />
[[Development/Tutorials|tutorial directory]]<br />
<br />
===KDE glue===<br />
what defines a KDE app?<br />
* localization<br />
* consistent menus, accelerators, toolbars, chrome, icons<br />
* transparent file access<br />
* simple, cross-platform build system<br />
* shared technology<br />
* testing<br />
* documentation<br />
* open source<br />
* inviting for new users and contributors<br />
the next step is showing prospective contributors (and active ones wanting to learn more) how to use the glue<br />
<br />
===everyday tech===<br />
* Hello World: this is the simplest KDE app; proves your dev environment is working and gives you confidence to continue coding!<br />
** There is a [[Development/Tutorials/First program|dialog]] tutorial; why not do a single source-file KMainWindow app? (just needs to include the moc at the end)<br />
* CMake: how to create your own app; and plug in other libraries<br />
** the first apps will introduce how to do basic stuff (and show standard KDE formatting)<br />
** can point to CMake doc itself<br />
** should document KDE CMake macros and common conventions<br />
* KActions: setting up menus, toolbars, and accelerators<br />
** {{class|KAction}}<br />
* Internationalization and localiazation<br />
** <br />
* QT Designer: designing a widget-based interface<br />
** <br />
* KConfigXT: persistent app config data. making the settings dialog. using the settings<br />
** <br />
* KIO: tranparent file access. how does it work with the QT libraries?<br />
** <br />
* KPixmapCache: <br />
** <br />
* ThreadWeaver: performs "jobs" that can be scheduled on non-UI threads<br />
** [http://api.kde.org/4.0-api/kdelibs-apidocs/threadweaver/html/index.html API]: can be hard to navigate; there are working examples in the source tree though<br />
<br />
===pillars of KDE4===<br />
* Solid: getting info about hardware<br />
** [http://solid.kde.org/ homepage]<br />
** [http://api.kde.org/4.0-api/kdelibs-apidocs/solid/html/namespaceSolid.html API]<br />
** contact: Kevin Ottens<br />
** status: [[Development/Tutorials|tutorial]]<br />
* Phonon: use audio and video in your app<br />
** [http://api.kde.org/4.0-api/kdelibs-apidocs/phonon/html/index.html API]: gives a good quick overview of the library; has an undocumented full example<br />
* Strigi: find data. also how to let strigi use your filetype<br />
** [http://api.kde.org/kdesupport-api/kdesupport-apidocs/strigi/html/ API]<br />
* Plasma: creating a new desktop paradigm<br />
** <br />
* Nepomuk: relation to Strigi? file metainfo, relationships<br />
** [http://api.kde.org/4.0-api/kdelibs-apidocs/nepomuk/html/index.html API]: good description of Nepomuk's goad; but how does it fit with the user's desktop? should devs add all metainfo to the files they use? what happens when the file moves or gets transfered?<br />
* Decibel: connecting to other people<br />
** <br />
* Akonadi: communcations storage backend<br />
** <br />
* Oxygen: devs need to know how to access all of the icon and sound that this team has put together. (and maybe know how to give feedbacks or make commissions.) there should be doc about doing for yourself what the Oxygen team does<br />
* Sonnet: automatic language detection and spell-checking<br />
** [http://api.kde.org/4.0-api/kdelibs-apidocs/sonnet/html/index.html API]: main page does articulate and link to usage<br />
** status: the [[Development/Tutorials/Sonnet/SonnetTutorial|tutorial]] is bare right now<br />
<br />
===advanced===<br />
* job progress<br />
* D-Bus<br />
* GetHotNewStuff2<br />
<br />
===PIM stuff===<br />
* Khalkhi: contacts framework<br />
* KitchenSync<br />
* syndication: using syndication feeds<br />
<br />
===games===<br />
* GGZ<br />
* graphics framework<br />
** QGraphicsView, custom sprite handling...<br />
* physics<br />
** Step, Eigen2?<br />
<br />
===other languages===<br />
* ruby, python, EMCAScript, java, c#<br />
* i have a feeling that this should be where new devs should be directed first<br />
* assuming its dead simple to get running with the language on your OS, it should be THE starting place<br />
* is there any reason to dissuade devs from using these languages?<br />
** commits to KDElibs are in C++<br />
** performance issues?<br />
** unstable APIs?<br />
** incomplete APIs?<br />
<br />
===mystery tech===<br />
* Soprano: pluggable framework for RDF storage and parsing<br />
** [http://api.kde.org/kdesupport-api/kdesupport-apidocs/soprano/html/ API]<br />
** how does an app dev use this?<br />
* DNSSD: discover services on the network or announce the availability of a service provided by your application<br />
** [http://api.kde.org/4.0-api/kdelibs-apidocs/dnssd/html/index.html API]: the hyperlinks aren't working :(</div>Dcecilehttps://techbase.kde.org/index.php?title=User:Dcecile&diff=14627User:Dcecile2007-10-13T16:11:29Z<p>Dcecile: </p>
<hr />
<div>(unrelated development schedule: [[Schedules/KDE4/4.0_Release_Beta_Goals]])<br />
<br />
every part of the KDE libraries needs tutorial documentation. this is a survey. (note: the lists of modules could be taken from a release doc or something.....) tutorials should answer: "why would I use KDE over just QT?"<br />
<br />
[[Development/Tutorials/|tutorial directory]]<br />
<br />
===KDE glue===<br />
what defines a KDE app?<br />
* localization<br />
* consistent menus, accelerators, toolbars, chrome, icons<br />
* transparent file access<br />
* simple, cross-platform build system<br />
* shared technology<br />
* testing<br />
* documentation<br />
* open source<br />
* inviting for new users and contributors<br />
the next step is showing prospective contributors (and active ones wanting to learn more) how to use the glue<br />
<br />
===everyday tech===<br />
* Hello World: this is the simplest KDE app; proves your dev environment is working and gives you confidence to continue coding!<br />
** There is a [[Development/Tutorials/First program|dialog]] tutorial; why not do a single source-file KMainWindow app? (just needs to include the moc at the end)<br />
* CMake: how to create your own app; and plug in other libraries<br />
** the first apps will introduce how to do basic stuff (and show standard KDE formatting)<br />
** can point to CMake doc itself<br />
** should document KDE CMake macros and common conventions<br />
* KActions: setting up menus, toolbars, and accelerators<br />
** {{class|KAction}}<br />
* Internationalization and localiazation<br />
** <br />
* QT Designer: designing a widget-based interface<br />
** <br />
* KConfigXT: persistent app config data. making the settings dialog. using the settings<br />
** <br />
* KIO: tranparent file access. how does it work with the QT libraries?<br />
** <br />
* KPixmapCache: <br />
** <br />
* ThreadWeaver: performs "jobs" that can be scheduled on non-UI threads<br />
** [http://api.kde.org/4.0-api/kdelibs-apidocs/threadweaver/html/index.html API]: can be hard to navigate; there are working examples in the source tree though<br />
<br />
===pillars of KDE4===<br />
* Solid: getting info about hardware<br />
** [http://solid.kde.org/ homepage]<br />
** [http://api.kde.org/4.0-api/kdelibs-apidocs/solid/html/namespaceSolid.html API]<br />
** contact: Kevin Ottens<br />
** status: [[Development/Tutorials|tutorial]]<br />
* Phonon: use audio and video in your app<br />
** [http://api.kde.org/4.0-api/kdelibs-apidocs/phonon/html/index.html API]: gives a good quick overview of the library; has an undocumented full example<br />
* Strigi: find data. also how to let strigi use your filetype<br />
** [http://api.kde.org/kdesupport-api/kdesupport-apidocs/strigi/html/ API]<br />
* Plasma: creating a new desktop paradigm<br />
** <br />
* Nepomuk: relation to Strigi? file metainfo, relationships<br />
** [http://api.kde.org/4.0-api/kdelibs-apidocs/nepomuk/html/index.html API]: good description of Nepomuk's goad; but how does it fit with the user's desktop? should devs add all metainfo to the files they use? what happens when the file moves or gets transfered?<br />
* Decibel: connecting to other people<br />
** <br />
* Akonadi: communcations storage backend<br />
** <br />
* Oxygen: devs need to know how to access all of the icon and sound that this team has put together. (and maybe know how to give feedbacks or make commissions.) there should be doc about doing for yourself what the Oxygen team does<br />
* Sonnet: automatic language detection and spell-checking<br />
** [http://api.kde.org/4.0-api/kdelibs-apidocs/sonnet/html/index.html API]: main page does articulate and link to usage<br />
** status: the [[Development/Tutorials/Sonnet/SonnetTutorial|tutorial]] is bare right now<br />
<br />
===advanced===<br />
* job progress<br />
* D-Bus<br />
* GetHotNewStuff2<br />
<br />
===PIM stuff===<br />
* Khalkhi: contacts framework<br />
* KitchenSync<br />
* syndication: using syndication feeds<br />
<br />
===games===<br />
* GGZ<br />
* graphics framework<br />
** QGraphicsView, custom sprite handling...<br />
* physics<br />
** Step, Eigen2?<br />
<br />
===other languages===<br />
* ruby, python, EMCAScript, java, c#<br />
* i have a feeling that this should be where new devs should be directed first<br />
* assuming its dead simple to get running with the language on your OS, it should be THE starting place<br />
* is there any reason to dissuade devs from using these languages?<br />
** commits to KDElibs are in C++<br />
** performance issues?<br />
** unstable APIs?<br />
** incomplete APIs?<br />
<br />
===mystery tech===<br />
* Soprano: pluggable framework for RDF storage and parsing<br />
** [http://api.kde.org/kdesupport-api/kdesupport-apidocs/soprano/html/ API]<br />
** how does an app dev use this?<br />
* DNSSD: discover services on the network or announce the availability of a service provided by your application<br />
** [http://api.kde.org/4.0-api/kdelibs-apidocs/dnssd/html/index.html API]: the hyperlinks aren't working :(</div>Dcecilehttps://techbase.kde.org/index.php?title=User:Dcecile&diff=14600User:Dcecile2007-10-12T23:30:25Z<p>Dcecile: </p>
<hr />
<div>(unrelated development schedule: [[Schedules/KDE4/4.0_Release_Beta_Goals]])<br />
<br />
every part of the KDE libraries needs tutorial documentation. this is a survey. (note: the lists of modules could be taken from a release doc or something.....) tutorials should answer: "why would I use KDE over just QT?"<br />
<br />
===KDE glue===<br />
what defines a KDE app?<br />
* localization<br />
* consistent menus, accelerators, toolbars, chrome, icons<br />
* transparent file access<br />
* simple, cross-platform build system<br />
* shared technology<br />
* testing<br />
* documentation<br />
* open source<br />
* inviting for new users and contributors<br />
the next step is showing prospective contributors (and active ones wanting to learn more) how to use the glue<br />
<br />
===everyday tech===<br />
* Hello World: this is the simplest KDE app; proves your dev environment is working and gives you confidence to continue coding!<br />
** There is a [[Development/Tutorials/First program|dialog]] tutorial; why not do a single source-file KMainWindow app? (just needs to include the moc at the end)<br />
* CMake: how to create your own app; and plug in other libraries<br />
** the first apps will introduce how to do basic stuff (and show standard KDE formatting)<br />
** can point to CMake doc itself<br />
** should document KDE CMake macros and common conventions<br />
* KActions: setting up menus, toolbars, and accelerators<br />
** {{class|KAction}}<br />
* Internationalization and localiazation<br />
** <br />
* QT Designer: designing a widget-based interface<br />
** <br />
* KConfigXT: persistent app config data. making the settings dialog. using the settings<br />
** <br />
* KIO: tranparent file access. how does it work with the QT libraries?<br />
** <br />
* KPixmapCache: <br />
** <br />
* ThreadWeaver: performs "jobs" that can be scheduled on non-UI threads<br />
** [http://api.kde.org/4.0-api/kdelibs-apidocs/threadweaver/html/index.html API]: can be hard to navigate; there are working examples in the source tree though<br />
<br />
===pillars of KDE4===<br />
* Solid: getting info about hardware<br />
** [http://solid.kde.org/ homepage]<br />
** [http://api.kde.org/4.0-api/kdelibs-apidocs/solid/html/namespaceSolid.html API]<br />
** contact: Kevin Ottens<br />
** status: [[Development/Tutorials|tutorial]]<br />
* Phonon: use audio and video in your app<br />
** [http://api.kde.org/4.0-api/kdelibs-apidocs/phonon/html/index.html API]: gives a good quick overview of the library; has an undocumented full example<br />
* Strigi: find data. also how to let strigi use your filetype<br />
** [http://api.kde.org/kdesupport-api/kdesupport-apidocs/strigi/html/ API]<br />
* Plasma: creating a new desktop paradigm<br />
** <br />
* Nepomuk: relation to Strigi? file metainfo, relationships<br />
** [http://api.kde.org/4.0-api/kdelibs-apidocs/nepomuk/html/index.html API]: good description of Nepomuk's goad; but how does it fit with the user's desktop? should devs add all metainfo to the files they use? what happens when the file moves or gets transfered?<br />
* Decibel: connecting to other people<br />
** <br />
* Akonadi: communcations storage backend<br />
** <br />
* Oxygen: devs need to know how to access all of the icon and sound that this team has put together. (and maybe know how to give feedbacks or make commissions.) there should be doc about doing for yourself what the Oxygen team does<br />
* Sonnet: automatic language detection and spell-checking<br />
** [http://api.kde.org/4.0-api/kdelibs-apidocs/sonnet/html/index.html API]: main page does articulate and link to usage<br />
** status: the [[Development/Tutorials/Sonnet/SonnetTutorial|tutorial]] is bare right now<br />
<br />
===advanced===<br />
* job progress<br />
* D-Bus<br />
* GetHotNewStuff2<br />
<br />
===PIM stuff===<br />
* Khalkhi: contacts framework<br />
* KitchenSync<br />
* syndication: using syndication feeds<br />
<br />
===games===<br />
* GGZ<br />
* graphics framework<br />
** QGraphicsView, custom sprite handling...<br />
* physics<br />
** Step, Eigen2?<br />
<br />
===other languages===<br />
* ruby, python, EMCAScript, java, c#<br />
* i have a feeling that this should be where new devs should be directed first<br />
* assuming its dead simple to get running with the language on your OS, it should be THE starting place<br />
* is there any reason to dissuade devs from using these languages?<br />
** commits to KDElibs are in C++<br />
** performance issues?<br />
** unstable APIs?<br />
** incomplete APIs?<br />
<br />
===mystery tech===<br />
* Soprano: pluggable framework for RDF storage and parsing<br />
** [http://api.kde.org/kdesupport-api/kdesupport-apidocs/soprano/html/ API]<br />
** how does an app dev use this?<br />
* DNSSD: discover services on the network or announce the availability of a service provided by your application<br />
** [http://api.kde.org/4.0-api/kdelibs-apidocs/dnssd/html/index.html API]: the hyperlinks aren't working :(</div>Dcecilehttps://techbase.kde.org/index.php?title=User:Dcecile&diff=14594User:Dcecile2007-10-12T22:46:34Z<p>Dcecile: </p>
<hr />
<div>(unrelated development schedule: [[Schedules/KDE4/4.0_Release_Beta_Goals]])<br />
<br />
every part of the KDE libraries needs tutorial documentation. this is a survey. (note: the lists of modules could be taken from a release doc or something.....) tutorials should answer: "why would I use KDE over just QT?"<br />
<br />
===KDE glue===<br />
what defines a KDE app?<br />
* localization<br />
* consistent menus, accelerators, toolbars, chrome, icons<br />
* transparent file access<br />
* simple, cross-platform build system<br />
* shared technology<br />
* testing<br />
* documentation<br />
* open source<br />
* inviting for new users and contributors<br />
the next step is showing prospective contributors (and active ones wanting to learn more) how to use the glue<br />
<br />
===everyday tech===<br />
* Hello World: this is the simplest KDE app; proves your dev environment is working and gives you confidence to continue coding!<br />
** There is a [[Development/Tutorials/First program|dialog]]<br />
* CMake: how to create your own app; and plug in other libraries<br />
* KActions: setting up menus, toolbars, and accelerators<br />
** {{class|KAction}}<br />
* Internationalization and localiazation<br />
* QT Designer: designing a widget-based interface<br />
* KConfigXT: persistent app config data. making the settings dialog. using the settings<br />
* KPixmapCache: <br />
* KIO: tranparent file access. how does it work with the QT libraries?<br />
* ThreadWeaver: performs "jobs" that can be scheduled on non-UI threads<br />
<br />
===pillars of KDE4===<br />
* Solid: getting info about hardware<br />
** [http://solid.kde.org/ homepage]<br />
** [http://api.kde.org/4.0-api/kdelibs-apidocs/solid/html/namespaceSolid.html API]<br />
** contact: Kevin Ottens<br />
** status: [[Development/Tutorials|tutorial]]<br />
* Phonon: use audio and video in your app<br />
* Strigi: find data. also how to let strigi use your filetype<br />
* Plasma: creating a new desktop paradigm<br />
* Nepomuk: relation to Strigi? file metainfo, relationships<br />
* Decibel: connecting to other people<br />
* Akonadi: communcations storage backend<br />
* Oxygen: devs need to know how to access all of the icon and sound that this team has put together. (and maybe know how to give feedbacks or make commissions.) there should be doc about doing for yourself what the Oxygen team does<br />
* Sonnet<br />
<br />
===other===<br />
* job progress<br />
* D-Bus<br />
* GetHotNewStuff2<br />
<br />
===PIM stuff===<br />
* Khalkhi: contacts framework<br />
* KitchenSync<br />
* syndication etc.<br />
<br />
===Games===<br />
* GGZ<br />
* graphics framework<br />
* physics</div>Dcecilehttps://techbase.kde.org/index.php?title=User:Dcecile&diff=14592User:Dcecile2007-10-12T22:09:12Z<p>Dcecile: </p>
<hr />
<div>(unrelated development schedule: [[Schedules/KDE4/4.0_Release_Beta_Goals]])<br />
<br />
every part of the KDE libraries needs tutorial documentation. this is a survey. (note: the lists of modules could be taken from a release doc or something.....) tutorials should answer: "why would I use KDE over just QT?"<br />
<br />
===KDE glue===<br />
what defines a KDE app?<br />
* localization<br />
* consistent menus, accelerators, toolbars, chrome, icons<br />
* transparent file access<br />
* simple, cross-platform build system<br />
* shared technology<br />
* testing<br />
* documentation<br />
* open source<br />
* inviting for new users and contributors<br />
<br />
===everyday tech===<br />
* Hello World: this is the simplest KDE app; proves your dev environment is working and gives you confidence to continue coding!<br />
** There is a [[Development/Tutorials/First program|dialog]]<br />
* CMake: how to create your own app; and plug in other libraries<br />
* KActions: setting up menus, toolbars, and accelerators<br />
* Internationalization and localiazation<br />
* QT Designer: designing a widget-based interface<br />
* KConfigXT: persistent app config data. making the settings dialog. using the settings<br />
* KPixmapCache: <br />
* KIO: tranparent file access. how does it work with the QT libraries?<br />
* ThreadWeaver: performs "jobs" that can be scheduled on non-UI threads<br />
<br />
===pillars of KDE4===<br />
* Solid: getting info about hardware<br />
** [http://www.kde.org extra info]<br />
** [http://www.kde.org API]<br />
** contact: Kevin Ottens<br />
** status: [[Development/Tutorials|tutorial]]<br />
* Phonon: use audio and video in your app<br />
* Strigi: find data. also how to let strigi use your filetype<br />
* Plasma: creating a new desktop paradigm<br />
* Nepomuk: relation to Strigi? file metainfo, relationships<br />
* Decibel: connecting to other people<br />
* Akonadi: communcations storage backend<br />
* Oxygen: devs need to know how to access all of the icon and sound that this team has put together. (and maybe know how to give feedbacks or make commissions.) there should be doc about doing for yourself what the Oxygen team does<br />
* Sonnet<br />
<br />
<br />
===other===<br />
* job progress<br />
* D-Bus<br />
<br />
===PIM stuff===<br />
* Khalkhi: contacts framework<br />
* KitchenSync<br />
* syndication etc.</div>Dcecilehttps://techbase.kde.org/index.php?title=User:Dcecile&diff=14591User:Dcecile2007-10-12T22:06:59Z<p>Dcecile: </p>
<hr />
<div>(unrelated development schedule: [[Schedules/KDE4/4.0_Release_Beta_Goals]])<br />
<br />
every part of the KDE libraries needs tutorial documentation. this is a survey. (note: the lists of modules could be taken from a release doc or something.....) tutorials should answer: "why would I use KDE over just QT?"<br />
<br />
===KDE glue===<br />
what defines a KDE app?<br />
* localization<br />
* consistent menus, accelerators, toolbars, chrome, icons<br />
* transparent file access<br />
* simple, cross-platform build system<br />
* shared technology<br />
* testing<br />
* documentation<br />
* open source<br />
* inviting for new users and developers<br />
<br />
===pillars of KDE===<br />
* Solid: getting info about hardware<br />
** [http://www.kde.org extra info]<br />
** [http://www.kde.org API]<br />
** contact: Kevin Ottens<br />
** status: [[Development/Tutorials|tutorial]]<br />
* Phonon: use audio and video in your app<br />
* Strigi: find data. also how to let strigi use your filetype<br />
* Plasma: creating a new desktop paradigm<br />
* Nepomuk: relation to Strigi? file metainfo, relationships<br />
* Decibel: connecting to other people<br />
* Akonadi: communcations storage backend<br />
* Oxygen: devs need to know how to access all of the icon and sound that this team has put together. (and maybe know how to give feedbacks or make commissions.) there should be doc about doing for yourself what the Oxygen team does<br />
* Sonnet<br />
<br />
===everyday tech===<br />
* Hello World: this is the simplest KDE app; proves your dev environment is working and gives you confidence to continue coding!<br />
** There is a [[Development/Tutorials/First program|dialog]]<br />
* CMake: how to create your own app; and plug in other libraries<br />
* KActions: setting up menus, toolbars, and accelerators<br />
* Internationalization and localiazation<br />
* QT Designer: designing a widget-based interface<br />
* KConfigXT: persistent app config data. making the settings dialog. using the settings<br />
* KPixmapCache: <br />
* KIO: tranparent file access. how does it work with the QT libraries?<br />
* ThreadWeaver: performs "jobs" that can be scheduled on non-UI threads<br />
<br />
<br />
===other===<br />
* job progress<br />
* D-Bus<br />
<br />
===PIM stuff===<br />
* Khalkhi: contacts framework<br />
* KitchenSync<br />
* syndication etc.</div>Dcecilehttps://techbase.kde.org/index.php?title=User:Dcecile&diff=14587User:Dcecile2007-10-12T21:03:17Z<p>Dcecile: /* everyday tech */</p>
<hr />
<div>(unrelated development schedule: [[Schedules/KDE4/4.0_Release_Beta_Goals]])<br />
<br />
all parts of the KDE libraries need tutorial documentation. this is a survey. (note: the lists of modules could be taken from a release doc or something.....) tutorials should answer: "why would I use KDE over just QT?"<br />
<br />
===pillars of KDE===<br />
* Solid: getting info about hardware<br />
** [http://www.kde.org extra info]<br />
** [http://www.kde.org API]<br />
** contact: Kevin Ottens<br />
** status: [[Development/Tutorials|tutorial]]<br />
* Phonon: use audio and video in your app<br />
* Strigi: find data. also how to let strigi use your filetype<br />
* Plasma: creating a new desktop paradigm<br />
* Nepomuk: relation to Strigi? file metainfo, relationships<br />
* Decibel: connecting to other people<br />
* Akonadi: communcations storage backend<br />
* Oxygen: devs need to know how to access all of the icon and sound that this team has put together. (and maybe know how to give feedbacks or make commissions.) there should be doc about doing for yourself what the Oxygen team does<br />
* Sonnet<br />
<br />
===everyday tech===<br />
* Hello World: this is the simplest KDE app; proves your dev environment is working and gives you confidence to continue coding!<br />
** There is a [[Development/Tutorials/First program|dialog]]<br />
* CMake: how to create your own app; and plug in other libraries<br />
* KActions: setting up menus, toolbars, and accelerators<br />
* QT Designer: designing a widget-based interface<br />
* KConfigXT: persistent app config data. making the settings dialog. using the settings<br />
* KPixmapCache: <br />
* KIO: tranparent file access. how does it work with the QT libraries?<br />
<br />
===other===<br />
* job progress<br />
* D-Bus<br />
<br />
===PIM stuff===<br />
* Khalkhi: contacts framework<br />
* KitchenSync<br />
* syndication etc.</div>Dcecilehttps://techbase.kde.org/index.php?title=User:Dcecile&diff=14578User:Dcecile2007-10-12T20:05:58Z<p>Dcecile: /* pillars of KDE */</p>
<hr />
<div>(unrelated development schedule: [[Schedules/KDE4/4.0_Release_Beta_Goals]])<br />
<br />
all parts of the KDE libraries need tutorial documentation. this is a survey. (note: the lists of modules could be taken from a release doc or something.....) tutorials should answer: "why would I use KDE over just QT?"<br />
<br />
===pillars of KDE===<br />
* Solid: getting info about hardware<br />
** [http://www.kde.org extra info]<br />
** [http://www.kde.org API]<br />
** contact: Kevin Ottens<br />
** status: [[Development/Tutorials|tutorial]]<br />
* Phonon: use audio and video in your app<br />
* Strigi: find data. also how to let strigi use your filetype<br />
* Plasma: creating a new desktop paradigm<br />
* Nepomuk: relation to Strigi? file metainfo, relationships<br />
* Decibel: connecting to other people<br />
* Akonadi: communcations storage backend<br />
* Oxygen: devs need to know how to access all of the icon and sound that this team has put together. (and maybe know how to give feedbacks or make commissions.) there should be doc about doing for yourself what the Oxygen team does<br />
* Sonnet<br />
<br />
===everyday tech===<br />
* Hello World: this is the simplest KDE app; proves your dev environment is working and gives you confidence to continue coding!<br />
** There is a [[Development/Tutorials/First program|dialog]]* CMake: how to create your own app; and plug in other libraries<br />
* KActions: setting up menus, toolbars, and accelerators<br />
* QT Designer: designing a widget-based interface<br />
* KConfigXT: persistent app config data. making the settings dialog. using the settings<br />
* KPixmapCache: <br />
* KIO: tranparent file access. how does it work with the QT libraries?<br />
<br />
===other===<br />
* job progress<br />
* D-Bus<br />
<br />
===PIM stuff===<br />
* Khalkhi: contacts framework<br />
* KitchenSync<br />
* syndication etc.</div>Dcecilehttps://techbase.kde.org/index.php?title=User:Dcecile&diff=14575User:Dcecile2007-10-12T18:46:44Z<p>Dcecile: /* pillars of KDE */</p>
<hr />
<div>(unrelated development schedule: [[Schedules/KDE4/4.0_Release_Beta_Goals]])<br />
<br />
all parts of the KDE libraries need tutorial documentation. this is a survey. (note: the lists of modules could be taken from a release doc or something.....) tutorials should answer: "why would I use KDE over just QT?"<br />
<br />
===pillars of KDE===<br />
* Solid: getting info about hardware<br />
** [http://www.kde.org extra info]<br />
** [http://www.kde.org API]<br />
** contact: Kevin Ottens<br />
** status: [[Development/Tutorials|tutorial]]<br />
* Phonon: use audio and video in your app<br />
* Strigi: find data. also how to let strigi use your filetype<br />
* Plasma: creating a new desktop paradigm<br />
* Nepomuk: relation to Strigi? file metainfo, relationships<br />
* Decibel: connecting to other people<br />
* Akonadi: communcations storage backend<br />
* Oxygen: devs need to know how to access all of the icon and sound that this team has put together. (and maybe know how to give feedbacks or make commissions.) there should be doc about doing for yourself what the Oxygen team does<br />
<br />
===everyday tech===<br />
* Hello World: this is the simplest KDE app; proves your dev environment is working and gives you confidence to continue coding!<br />
** There is a [[Development/Tutorials/First program|dialog]]* CMake: how to create your own app; and plug in other libraries<br />
* KActions: setting up menus, toolbars, and accelerators<br />
* QT Designer: designing a widget-based interface<br />
* KConfigXT: persistent app config data. making the settings dialog. using the settings<br />
* KPixmapCache: <br />
* KIO: tranparent file access. how does it work with the QT libraries?<br />
<br />
===other===<br />
* job progress<br />
* D-Bus<br />
<br />
===PIM stuff===<br />
* Khalkhi: contacts framework<br />
* KitchenSync<br />
* syndication etc.</div>Dcecilehttps://techbase.kde.org/index.php?title=User:Dcecile&diff=14573User:Dcecile2007-10-12T18:46:22Z<p>Dcecile: /* pillars of KDE */</p>
<hr />
<div>(unrelated development schedule: [[Schedules/KDE4/4.0_Release_Beta_Goals]])<br />
<br />
all parts of the KDE libraries need tutorial documentation. this is a survey. (note: the lists of modules could be taken from a release doc or something.....) tutorials should answer: "why would I use KDE over just QT?"<br />
<br />
===pillars of KDE===<br />
* Solid: getting info about hardware<br />
** [http://www.kde.org extra info] [http://www.kde.org API]<br />
** contact: Kevin Ottens<br />
** status: [[Development/Tutorials|tutorial]]<br />
* Phonon: use audio and video in your app<br />
* Strigi: find data. also how to let strigi use your filetype<br />
* Plasma: creating a new desktop paradigm<br />
* Nepomuk: relation to Strigi? file metainfo, relationships<br />
* Decibel: connecting to other people<br />
* Akonadi: communcations storage backend<br />
* Oxygen: devs need to know how to access all of the icon and sound that this team has put together. (and maybe know how to give feedbacks or make commissions.) there should be doc about doing for yourself what the Oxygen team does<br />
<br />
===everyday tech===<br />
* Hello World: this is the simplest KDE app; proves your dev environment is working and gives you confidence to continue coding!<br />
** There is a [[Development/Tutorials/First program|dialog]]* CMake: how to create your own app; and plug in other libraries<br />
* KActions: setting up menus, toolbars, and accelerators<br />
* QT Designer: designing a widget-based interface<br />
* KConfigXT: persistent app config data. making the settings dialog. using the settings<br />
* KPixmapCache: <br />
* KIO: tranparent file access. how does it work with the QT libraries?<br />
<br />
===other===<br />
* job progress<br />
* D-Bus<br />
<br />
===PIM stuff===<br />
* Khalkhi: contacts framework<br />
* KitchenSync<br />
* syndication etc.</div>Dcecilehttps://techbase.kde.org/index.php?title=User:Dcecile&diff=14401User:Dcecile2007-10-08T15:41:35Z<p>Dcecile: </p>
<hr />
<div>(unrelated development schedule: [[Schedules/KDE4/4.0_Release_Beta_Goals]])<br />
<br />
all parts of the KDE libraries need tutorial documentation. this is a survey. (note: the lists of modules could be taken from a release doc or something.....) tutorials should answer: "why would I use KDE over just QT?"<br />
<br />
===pillars of KDE===<br />
* Solid: getting info about hardware<br />
* Phonon: use audio and video in your app<br />
* Strigi: find data. also how to let strigi use your filetype<br />
* Plasma: creating a new desktop paradigm<br />
* Nepomuk: relation to Strigi? file metainfo, relationships<br />
* Decibel: connecting to other people<br />
* Akonadi: communcations storage backend<br />
* Oxygen: devs need to know how to access all of the icon and sound that this team has put together. (and maybe know how to give feedbacks or make commissions.) there should be doc about doing for yourself what the Oxygen team does<br />
<br />
===everyday tech===<br />
* Hello World: this is the simplest KDE app; proves your dev environment is working and gives you confidence to continue coding!<br />
** There is a [[Development/Tutorials/First program|dialog]]* CMake: how to create your own app; and plug in other libraries<br />
* KActions: setting up menus, toolbars, and accelerators<br />
* QT Designer: designing a widget-based interface<br />
* KConfigXT: persistent app config data. making the settings dialog. using the settings<br />
* KPixmapCache: <br />
* KIO: tranparent file access. how does it work with the QT libraries?<br />
<br />
===other===<br />
* job progress<br />
* D-Bus<br />
<br />
===PIM stuff===<br />
* Khalkhi: contacts framework<br />
* KitchenSync<br />
* syndication etc.</div>Dcecilehttps://techbase.kde.org/index.php?title=User:Dcecile&diff=14400User:Dcecile2007-10-08T13:58:12Z<p>Dcecile: </p>
<hr />
<div>all parts of the KDE libraries need tutorial documentation. this is a survey. (note: the lists of modules could be taken from a release doc or something.....) tutorials should answer: "why would I use KDE over just QT?"<br />
<br />
pillars of KDE:<br />
* Solid<br />
* Phonon<br />
* Strigi<br />
* Plasma<br />
* Nepomuk<br />
* Decibel<br />
* Akonadi: communcations storage backend<br />
* Oxygen: devs need to know how to access all of the icon and sound that this team has put together. (and maybe know how to give feedbacks or make commissions.) there should be doc about doing for yourself what the Oxygen team does<br />
<br />
everyday tech:<br />
* CMake: how to create your own app; and plug in other libraries<br />
* KActions: setting up menus, toolbars, and accelerators<br />
* QT Designer: designing a widget-based interface<br />
* KConfigXT: persistent app config data. making the settings dialog. using the settings<br />
* KPixmapCache: <br />
* D-Bus<br />
* KIO: tranparent file access. how does it work with the QT libraries?<br />
<br />
other:<br />
* job progress<br />
<br />
PIM stuff:<br />
* Khalkhi: contacts framework<br />
* KitchenSync<br />
* syndication etc.</div>Dcecilehttps://techbase.kde.org/index.php?title=User:Dcecile&diff=14399User:Dcecile2007-10-08T13:56:52Z<p>Dcecile: New page: all parts of the KDE libraries need tutorial documentation. this is a survey. (note: the lists of modules could be taken from a release doc or something.....) pillars of KDE: * Solid * Ph...</p>
<hr />
<div>all parts of the KDE libraries need tutorial documentation. this is a survey. (note: the lists of modules could be taken from a release doc or something.....)<br />
<br />
pillars of KDE:<br />
* Solid<br />
* Phonon<br />
* Strigi<br />
* Plasma<br />
* Nepomuk<br />
* Decibel<br />
* Akonadi: communcations storage backend<br />
* Oxygen: devs need to know how to access all of the icon and sound that this team has put together. (and maybe know how to give feedbacks or make commissions.) there should be doc about doing for yourself what the Oxygen team does<br />
<br />
everyday tech:<br />
* CMake: how to create your own app; and plug in other libraries<br />
* KActions: setting up menus, toolbars, and accelerators<br />
* QT Designer: designing a widget-based interface<br />
* KConfigXT: persistent app config data. making the settings dialog. using the settings<br />
* KPixmapCache: <br />
* D-Bus<br />
* KIO: tranparent file access. how does it work with the QT libraries?<br />
<br />
other:<br />
* job progress<br />
<br />
PIM stuff:<br />
* Khalkhi: contacts framework<br />
* KitchenSync<br />
* syndication etc.</div>Dcecilehttps://techbase.kde.org/index.php?title=Development/Tutorials/Localization/i18n&diff=8118Development/Tutorials/Localization/i18n2007-02-19T22:22:18Z<p>Dcecile: /* Why is This Important? */ missed a comma</p>
<hr />
<div>{{TutorialBrowser|<br />
<br />
series=Localization|<br />
<br />
pre=[[../Unicode|Introduction to Unicode]] is recommended, though not required|<br />
<br />
name=Writing Applications With Localization In Mind|<br />
<br />
next=[[../i18n_Mistakes|Avoiding Common Localization Pitfalls]]|<br />
<br />
}}<br />
<br />
== Abstract ==<br />
<br />
Reaching a broad audience of users and developers requires that your software can be translated and otherwise shaped at runtime to be linguistically and culturally relevant to whomever is sitting in front of the computer. This is the realm of localization and this tutorial steps you through what is needed to make your application localizable.<br />
<br />
== What is Internationalization and Localization? ==<br />
<br />
Internationalization, or i18n ('i', followed by 18 letters, then an 'n'), is the process of writing your application so that it can be run in any locale. This means taking into account such things as:<br />
* textual messages that are displayed to the user<br />
* data input from the user, files and other sources<br />
* format of dates, numbers, currency, dates, etc.<br />
<br />
Localization, or l10n ('l', followed by 10 characters, then an 'n'), is the process of taking an internationalized application and adapting it for a specific locale.<br />
<br />
Generaly speaking, programmers internationalize their applications and translation teams localize them.<br />
<br />
== Why is This Important? ==<br />
<br />
KDE development happens primarily in English as this allows the broadest reach into the development and translation communities. However, English is not the primary language of most people on the planet. In fact, fewer than 8% of humanity speaks English and less than 5% speak it as their mother tongue. Even on the Internet, only 35% people who are online use English as their primary language and as more and more of the world gets wired this number is only decreasing. Additionally most languages, including 9 out of the 10 most common languages, use non-ASCII characters in their written form. It is easy to see, then, why it has become a necessity to provide localized software. <br />
<br />
As an international project that spans the globe, such localization is a core value within the KDE culture. In fact, while many KDE developers write their software in English they use the desktop in their native locale.<br />
<br />
== Translatable Code Using i18n() ==<br />
<br />
To ensure your application is ready to be localized you have to follow a few simple rules. All user-visible strings in your application should be translated before they are displayed on the user's screen, exceptions to this being debugging messages, configuration keys and similar types of text data.<br />
<br />
KDE provides the <tt>KLocale</tt> class as part of <tt>libkdecore</tt> to facilitate the technical details of localization. KLocale makes it as easy as possible for developers to make their code i18n aware, but there are some things you need to be aware of so that applications are usable in other languages and countries.<br />
<br />
Access to a global <tt>KLocale</tt> object is provided via <tt>KGlobal::locale()</tt>. This <tt>KLocale</tt> object is created automatically by <tt>KInstance</tt> for you and take care of all user i18n related settings. It is deleted automatically on application exit.<br />
<br />
Translations are made possible by the <tt>QString i18n(const char*)</tt> method which you must wrap all strings that should be displayed in. The QString returned by <tt>i18n()</tt> is the translated (if necessary) string. This makes creating translatable widgets as simple as in this example:<br />
<br />
<code cppqt><br />
QPushButton* myButton = new QPushButton(i18n("Translate this!"));</code><br />
<br />
QString's native Unicode support ensures that all translations are represented correctly. All string handling done by your application should therefore use QString.<br />
<br />
{{tip|If the string to be translated contains any non-UTF8 characters, use the utf8() method to get a char*.}}<br />
<br />
=== I18N_NOOP ===<br />
<br />
The <tt>i18n()</tt> method requires that a <tt>KInstance</tt> (e.g. <tt>KApplication</tt>) has been created. For any strings that are created prior to this there is a macro provided: I18N_NOOP(). This allows one to mark strings that should be translated later as such.<br />
<br />
When you want to actually translate the string at runtime, you still have to use i18n() with exactly the same string. I18N_NOOP() is typically used for strings given to KAboutData, because it is constructed before the KApplication and you can use i18n() only after the construction of the KApplication. Other than these special cases, it is always safe to use i18n() if you are sure that the code will be executed after construction of KApplication or some other KInstance. <br />
<br />
=== Adding Context ===<br />
<br />
There is an extended version of <tt>i18n()</tt>, <tt>i18nc()</tt> which takes two <tt>const char*</tt> arguments. The first argument is an additional contextual description of the second string which will be translated. The first string is used to find the proper corresponding translation at run-time and is shown to translators to help them understand the meaning of the string. <br />
<br />
Use <tt>i18nc()</tt> whenever the purpose of the text might be ambiguous without further context. For example, consider a context menu in a file manager with an entry called "View" which opens a viewer for the currently selected file. In this context "View" is a verb. However, the same application also may have a menu called "View" in the menubar. In that context "View" is a noun. In the English version of the application everything looks fine, but in most other languages one of the two "View" strings will be incorrect.<br />
<br />
Additionally, translators sometimes need extra help in understanding what the text is actually referring to during the translation purpose.<br />
<br />
In the file manager example above, one might therefore write:<br />
<br />
<code cppqt>contextMenu->addAction(i18nc("verb, to view something", "View"));<br />
viewMenu->addAction(i18nc("noun, the view", "View"));</code><br />
<br />
Now the two strings will be properly translatable, both by the human translators and at runtime by KLocale.<br />
<br />
Use this form of i18n whenever the string to translate is short or the meaning is hard to discern when the context is not exactly known. For example:<br />
<br />
<code cppqt>QString up = i18nc("Go one directory up in the hierarchy", "Up");<br />
QString relation = i18nc("A person's name and their familial relationship to you.", "%1 is your %2", name, relationship);</code><br />
<br />
{{note|There is also a I18N_NOOP2("context","text") macro for providing untranslated strings with a context. You must, however, use i18nc later to retrieve the translated string.}}<br />
<br />
=== Standard Context For Common Phrases ===<br />
<br />
Below is a chart showing some common words and phrases in English and the context that must be used with them to ensure proper translation of them in other languages.<br />
<br />
{|<br />
|+ Standard Contexts<br />
|-<br />
! Phrase !! Context !! i18nc Call !! Example<br />
|-<br />
| Busy || Refering to a person || <tt>i18nc("A person is busy", "Busy")</tt><br />
|-<br />
| Busy || Refering to a thing || <tt>i18nc("A thing is busy", "Busy")</tt><br />
|-<br />
| Color || Color mode, as opposed to Grayscale || <tt>i18nc("Color mode", "Color")</tt><br />
|-<br />
| Display || Refering to hardware || <tt>i18nc("Hardware display", "Display")</tt><br />
|-<br />
| Line || Refering to drawing || <tt>i18nc("Draw a line", "Line")</tt><br />
|-<br />
| Line || Refering to text || <tt>i18nc("Line of text", "Line")</tt><br />
|-<br />
| Name || Refering to a name of thing || <tt>i18nc("A thing's name", "Name") || In theme change dialog: i18nc("Theme name", "Name")</tt><br />
|-<br />
| Name || Refering to first name and last name of person || <tt>i18nc("Person's first and last name", "Name") || In KAddessbook contact edit dialog: i18nc("Person's first and last name", "Name")</tt><br />
|-<br />
| No || Answer to a question || <tt>i18nc("Answer to a question", "No")</tt><br />
|-<br />
| No || Availability of a thing || <tt>i18nc("Availability", "No")</tt><br />
|-<br />
| Title || Refering to a person || <tt>i18nc("A person's title", "Title")</tt><br />
|-<br />
| Title || Refering to a thing || <tt>i18nc("A thing's title", "Title")</tt><br />
|-<br />
| Volume || Refering to sound || <tt>i18nc("Sound volume", "Volume")</tt><br />
|-<br />
| Volume || Refering to a filesystem || <tt>i18nc("Filesystem volume", "Volume")</tt><br />
|-<br />
| Volume || Refering to books || <tt>i18nc("Book volume", "Volume")</tt><br />
|-<br />
| Yes || Answer to a question || <tt>i18nc("Answer to a question", "Yes")</tt><br />
|-<br />
| Yes || Availability of a thing|| <tt>i18nc("Availability", "Yes")</tt><br />
|}<br />
<br />
=== Plurals ===<br />
<br />
Plurals are handled differently from language to language. Many languages have different plurals for 2, 10, 20, 100, etc. When the string you want translated refers to more than one item, you must use the third form of <tt>i18n</tt>, the <tt>i18np()</tt>. It takes the singular and plural English forms as its first two arguments, followed by any substitution arguments as usual, but at least one of which should be integer-valued. For example:<br />
<br />
<code cppqt>msgStr = i18np("1 image in album %2", "%1 images in album %2", numImages, albumName);</code><br />
<br />
<tt>i18np()</tt> gets expanded to as many cases as required by the user's language. In English, this is just two forms while in other languages it may be more, depending on the value of the first integer-valued argument.<br />
<br />
Note that this form should be used even if the string always refers to more than one item as languages use a singular form even when referring to a multiple (typically for 21, 31, etc.). This code:<br />
<br />
<code cppqt>i18n("%1 files were deleted", numFilesDeleted);</code><br />
<br />
is therefore incorrect and should instead be:<br />
<br />
<code cppqt>i18np("%1 files were deleted", <br />
"%1 files were deleted",<br />
numFilesDeleted);</code><br />
<br />
To provide context as well as pluralization, use <tt>i18ncp</tt> as in this example:<br />
<br />
<code cppqt>i18ncp("Personal file", "1 file", "%1 files", numFiles);</code><br />
<br />
== Formatting Dates and Numbers ==<br />
<br />
When displaying a number to the user, your program must take care of the decimal separator, thousand separator and currency symbol (if any) being used. These symbols differ from region to region. In English speaking countries a dot (.) is used to separate the fractional part of a number, while in some European countries a comma (,) is used instead. Below is a short summary of functions that will help you format the numbers correctly, taking the local conventions into account for you.<br />
<br />
{|<br />
|+ Functions to Format Numbers<br />
|-<br />
! Formats&nbsp;a.. !! From&nbsp;a.. !! Function&nbsp;Prototype<br />
|-<br />
| Number || String || <pre>QString formatNumber( const QString & numStr )</pre><br />
|-<br />
| Number || Integer,&nbsp;double || <pre>formatNumber( double num, <br />
int precision = -1 )</pre><br />
|-<br />
| Money || String || <pre>formatMoney( const QString & numStr )</pre><br />
|-<br />
| Money || Number || <pre>formatMoney( double num, <br />
const QString & currency,<br />
int digits = -1 )</pre><br />
|-<br />
| Date || String || <pre>formatDate( const QDate & pDate,<br />
bool shortFormat=false )</pre><br />
|-<br />
| Time || QTime || <pre>formatTime( const QTime & pTime, <br />
bool includeSecs=false)</pre><br />
|-<br />
| Date&nbsp;and&nbsp;time || QDateTime || <pre>formatDateTime( const QDateTime &pDateTime,<br />
bool shortFormat = true,<br />
bool includeSecs = false )</pre><br />
|} <br />
<br />
Similar functions exist to read information provided by the user at runtime in their localized format, e.g. readNumber() or readMoney().<br />
<br />
== Calendaring ==<br />
<br />
Developing applications dealing with dates and time, such as calendars, is a very complex area. Not only may the displayed string containing a date or time may look different based on locale, but one also has to take care of other aspects such as:<br />
* which day in the week is the first one (cf int weekStartDay()) <br />
* how many months in a year there are <br />
* "era"-based calendars <br />
* whether to use 24-hour time format (cf bool use12Clock()) <br />
<br />
KLocale provides, among others, these methods: <br />
<br />
{|<br />
|+ Calendar Data Functions<br />
|- <br />
! Formats&nbsp;a.. !! From&nbsp;a.. !! Function Prototype<br />
|-<br />
| Date || QDate || <pre>formatDate( const QDate & pDate,<br />
bool shortFormat=false )</pre><br />
|-<br />
| Time || QTime || <pre>formatTime( const QTime & pTime,<br />
bool includeSecs=false )</pre><br />
|-<br />
| Date&nbsp;and&nbsp;time || QDateTime || <pre>formatDateTime( const QDateTime &pDateTime,<br />
bool shortFormat=true,<br />
bool includeSecs=false )</pre><br />
|}<br />
<br />
{{improve|provide more info on the different calendar systems}}<br />
<br />
== Avoiding Common Traps ==<br />
There are a number of common problems that may prevent an application being properly localized. See [[../i18n Mistakes|Avoiding Common Localization Pitfalls]] to learn more about them, and how to avoid them.<br />
<br />
{{note|Thanks to Lukáš Tinkl, Matthias Kiefer and Gary Cramblitt for writing the original version of this tutorial.}}<br />
<br />
[[Category:Programming]]</div>Dcecilehttps://techbase.kde.org/index.php?title=Getting_Started&diff=6242Getting Started2007-01-02T04:37:07Z<p>Dcecile: This page is linked to from the main page as "Setting up a KDE development environment" but it doesn't get much past building KDE</p>
<hr />
<div>{{Box|Getting the Source|<br />
[[Image:Action_down.svg|right|32px]]<br />
KDE's source code is available in several ways:<br />
* [[/Sources/Anonymous SVN|Anonymous SVN]]<br />
* [http://websvn.kde.org/ Browse Code Online]<br />
* [ftp://ftp.kde.org/pub/kde/unstable/snapshots/ Daily Snapshots]<br />
|100%}}<br />
<br />
<br/><br />
<br />
{{Box|Building KDE|<br />
[[Image:Action_tool.svg|right|32px]]<br />
There are different KDE branches. For production use, a stable version of KDE is recommended.<br />
* [[/Build/Unstable Version|KDE 4 (Development version, trunk)]]<br />
* [[/Build/Stable Version|KDE 3.5 (Stable version)]]<br />
* [[/Build|Other versions and FAQ]]<br />
|100%}}<br />
<br />
<br/><br />
<br />
{{Box|Setting up the Environment|<br />
[[Image:Action_pen.svg|right|32px]]<br />
After KDE has been built, you'll want a good way to launch apps and perform your regular development tasks:<br />
* [[Set up KDE 4 for development]]<br />
|100%}}<br />
[[Category:Build KDE]]</div>Dcecile