<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://techbase.kde.org/skins/common/feed.css?0.2"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://techbase.kde.org/api.php?action=feedcontributions&amp;user=R+Rios&amp;feedformat=atom</id>
		<title>KDE TechBase - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://techbase.kde.org/api.php?action=feedcontributions&amp;user=R+Rios&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Special:Contributions/R_Rios"/>
		<updated>2013-05-22T16:46:46Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan</id>
		<title>Schedules/KDE4/4.10 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan"/>
				<updated>2012-11-08T22:09:19Z</updated>
		
		<summary type="html">&lt;p&gt;R Rios: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.10 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.10 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.9 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*todo =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|QML Containments|Making it possible to do full-featured containments in QML|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|nepomuk-indexer|New Nepomuk Indexer|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukbakcup|Nepomuk Backup rewritten from scratch|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukcleaner|An application to port/clean invalid/legacy data in Nepomuk|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk KCM|Rewrite the Nepomuk KCM|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk tags|Nepomuk Tags KIO Slave|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk filemetadtawdiget|Nepomuk Metadata Widget|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|ksmserver|Merge the new qml based screen locker|mart@kde.org|Marco Martin}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Medium focus stealing prevention should also prevent focus stealing when the timestamp on the active window is uncertain ({{bug |304746}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Usability issue: &amp;quot;Attach as tab to&amp;quot; menu can be empty ({{bug |306451}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display application menu and title bar side by side for maximized windows ({{bug |102607}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Add support for appmenu-qt ({{bug |266596}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Import Scripted Effect from All Effets Tab ({{bug |296772}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|GHNS support for Scripted Effects ({{bug |296773}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Remove legacy window decorations ({{bug |299144}}, Review 104281)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Get rid of  &amp;quot;Display borders on maximized windows&amp;quot; setting ({{bug |299245}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Cube animation on border approach should not be used unless the electric borders are actually in use and the config should be disabled, align or hint the electric border configuration ({{bug |299901}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make ShaderManager act as a real stack ({{bug |300349}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|clientPopup: &amp;quot;'More actions' and &amp;quot;Attach as tab to&amp;quot;  lack mnemonics ({{bug |302833}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make KWin compile with C++11 ({{bug |303313}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Copy all useful Client properties to Deleted ({{bug |303916}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display content of resizing/moving windows: KDE-Help shows obsolete instructions ({{bug |305297}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Mouse action support for sending window to different activity ({{bug |305758}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Windows list icon does not show up in &amp;quot;Walk Through Desktop List&amp;quot; ({{bug |306187}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Game mode ({{bug |306448}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Animate Window Maximize/Restore ({{bug |308990}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Common animation settings for effects of same type ({{bug |308991}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Use Resize Area in Aurorae ({{bug |308992}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Configurable quick tile area config GUI ({{bug |308993}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Move ExtendedBorderRegion to stable  API ({{bug |308994}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Support shortened titles like in bespin in all decorations ({{bug |308995}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Mouse Click effect ({{bug |309006}}, Review 105780)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Decorations not visible ({{bug |305875}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|drag-and-drop between windows by cover switch alt-tab causes apps to crash ({{bug |179077}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add a rule to select the screen ({{bug |183996}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Need Mouse navigation in flip switch mode ({{bug |244439}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297634}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297635}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297637}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Allow direct rendering with fglrx ({{bug |301103}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Don't use OpenGL matrix stack in OpenGL 2 backend ({{bug |303093}}, Review 105455)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Refactor Screen/Window PaintData ({{bug |303314}}, Review 105141)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Rapid flickering in locked screen -- makes it difficult to unlock ({{bug |303579}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|double click menu to close needs GUI config ({{bug |305738}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Toplevel::windowType() needs performance improvements ({{bug |306384}}, Review 106349)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|GLPlatform should recommend either OpenGL1 or OpenGL2 compositing ({{bug |306436}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Zoom effect broken in master ({{bug |307609}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|kwin fails to build when the GLES support is disabled ({{bug |307866}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|[JJ] Some effect authors are listed as &amp;quot;Name1 &amp;amp; Name2&amp;quot; ({{bug |307928}}, Review 106880)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add screen management actions to window context menus ({{bug |269207}}, Review 106065)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Move Workspace's compositing functionality to own class Compositor ({{bug |299277}}, Review 102420)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Option to disable close on double click in Aurorae ({{bug |301327}}, Review 106160)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Remove Tiling Support From KWin ({{bug |303090}}, Review 105546)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Allow Scripts to add menus to useractions menu ({{bug |303756}}, Review 106285)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Generic QML support for Aurorae Themes ({{bug |303810}}, Review 105768)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Split out Useractions Menu from Workspace ({{bug |305832}}, Review 106085)|mgraesslin@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureInProgress|kwin|Implement color correction (Review 106141)|skeletk13@gmail.com|Casian Andrei}}&lt;br /&gt;
{{FeatureInProgress|oxygen decoration|Implement ExtendedBorderRegion support, to resize windows outside of their actual borders|hugo@oxygen-icons.org|Hugo Pereira Da Costa}}&lt;br /&gt;
{{FeatureDone|oxygen style|Implement BlurBehind semi-transparent tooltips when available|hugo@oxygen-icons.org|Hugo Pereira Da Costa}}&lt;br /&gt;
{{FeatureDone|plasma-wallpapers|Color wallpaper: add listview to display thumbnails for background mode|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Notifications applet to QML|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureDone|System Tray|System tray with interface in QML|dmitry.ashkadov@gmail.com|Dmitry Ashkadov}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Keyboard layout preview|amourphious1992@gmail.com|Shivam Makkar}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|activities|Encrypted activities|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Improve profile error handling (DPMS)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Social Feed|mklapetek@kde.org|Martin Klapetek}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Dolphin|Implement parallel sort algorithm|emmanuelpescosta099@gmail.com|Emmanuel Pescosta}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Dolphin|Add GUI option for the &amp;quot;Rename Inline&amp;quot; setting|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Dolphin|Add &amp;quot;Icon Size&amp;quot; submenu to the Places Panel context menu|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|print-manager|New Print manager KCM and applet (plasmoid) replacement, using C++  |dantti12@gmail.com|Daniel Nicoletti}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Support for Python plugins|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Advanced gid(1) plugin using both ID files and etags|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|As-you-type search for the search plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|Session name API for plugins + automatic ctags database naming|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kate|Add optional document &amp;quot;minimap&amp;quot; to the Symbols view plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kate|Vim Mode Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kdialog|Add support for detailedsorry/detailederror messages|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Improve the search filter bar|francesco.cecconi@gmail.com|Francesco Cecconi}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Add the --separate cmdline option for running in new process|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Make the d&amp;amp;d popup menu optional|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android (including SOK branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Zoom to content of geo file after loading (at least on start-up)|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files thumbnailer|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files metadata extractor|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Rocs|Journal files for projects.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Revisit graph export/import functionality to fully support: TGF, DOT, GML, GraphML|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Main Window UI Reorganization: Editor Toolbar, dialogs, Information Panel|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Edit Menu|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Configuration Dialog Optimizations: Code-Editor, Graph Editor|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|KTouch|Ship ktouch/next|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|KTouch|Smart resizing of training screen with aligned vertical lines|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|KTouch|Prominent hint during training if the user makes repeatedly errors|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|KTouch|Show course descriptions in course selector|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|KTouch|Show a message when keyboard layout visualization isn't available due missing data|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|Analitza|New plotting framework|percy.camilo.ta@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureDone|KAlgebra|Splitted the QML Components from KAlgebraMobile|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|KAlgebra|New plotting plasmoid graphs, in QtQuick|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|Pairs|Pairs Theme editor|marco.calignano@gmail.com|Marco Calignano}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Mark right angles|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkdegames|[http://community.kde.org/KDE_Games/API_cleanup Major cleanup and rewrite] (done, except for the new highscore classes)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''Release team:''' please link to the [[Projects/Games/Porting_to_libkdegames_v5|porting instructions]]  for third-party developers|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Use KGameRenderer and QGraphicsView for all graphics: the gameplay is the same as before.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Remove the status bar. All scores and status messages are in the viewport now.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Allow the displayed speed of moves to be adjusted.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Animate multi-stage moves, to make it easier for a human player to follow their progress.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Show multi-stage moves in an order that is easier to follow.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Validate the loading of saved games and report errors.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Rewrite the main AI class and make it use a true Minimax method.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide a choice of two AI styles, Kepler and Newton, with the possibility to add more.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add settings to choose computer player, AI style and skill level for either or both of players 1 and 2.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add board sizes 3x3 and 4x4, for simplified play.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add a simple Print facility for KSudoku puzzles.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
{{FeatureInProgress|okular|Tiled rendering|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Recursive importer|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Color profile support|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add lyrics view|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KGet|Metalink/HTTP Support|dahalaishraj@gmail.com|Aish Raj Dahal}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
{{FeatureInProgress|ComicStrip|Replace with QML version|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureDone|Calculator|Replace with QML version|luizromario@gmail.com|Luiz Romário Santana Rios}}&lt;br /&gt;
{{FeatureDone|QML Wallpapers|Make it possible to have animated wallpapers written in QtQuick technologies.|aleixpol@blue-systems.com|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|Dictionary KRunner|Look up words in the dictionary by typing in 'define {word}' in krunner.|Jason@zx2c4.com|Jason A. Donenfeld}}&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add tagged unions to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add array indices to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureDone|Umbrello|Line based diagram grid |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello| widget resize and diagram auto resize feature |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello|add spline based association lines to avoid autolayout widget/line overlapping (needs volunteers)|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Ark|Make it possible to disable internal previewer|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>R Rios</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan</id>
		<title>Schedules/KDE4/4.10 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan"/>
				<updated>2012-11-01T22:19:35Z</updated>
		
		<summary type="html">&lt;p&gt;R Rios: Removing duplicate feature&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.10 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.10 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.9 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*todo =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|QML Containments|Making it possible to do full-featured containments in QML|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|nepomuk-indexer|New Nepomuk Indexer|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukbakcup|Nepomuk Backup rewritten from scratch|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukcleaner|An application to port/clean invalid/legacy data in Nepomuk|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk KCM|Rewrite the Nepomuk KCM|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk tags|Nepomuk Tags KIO Slave|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk filemetadtawdiget|Nepomuk Metadata Widget|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|ksmserver|Merge the new qml based screen locker|mart@kde.org|Marco Martin}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Medium focus stealing prevention should also prevent focus stealing when the timestamp on the active window is uncertain ({{bug |304746}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Usability issue: &amp;quot;Attach as tab to&amp;quot; menu can be empty ({{bug |306451}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display application menu and title bar side by side for maximized windows ({{bug |102607}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Add support for appmenu-qt ({{bug |266596}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Import Scripted Effect from All Effets Tab ({{bug |296772}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|GHNS support for Scripted Effects ({{bug |296773}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Remove legacy window decorations ({{bug |299144}}, Review 104281)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Get rid of  &amp;quot;Display borders on maximized windows&amp;quot; setting ({{bug |299245}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Cube animation on border approach should not be used unless the electric borders are actually in use and the config should be disabled, align or hint the electric border configuration ({{bug |299901}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make ShaderManager act as a real stack ({{bug |300349}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|clientPopup: &amp;quot;'More actions' and &amp;quot;Attach as tab to&amp;quot;  lack mnemonics ({{bug |302833}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make KWin compile with C++11 ({{bug |303313}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Copy all useful Client properties to Deleted ({{bug |303916}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display content of resizing/moving windows: KDE-Help shows obsolete instructions ({{bug |305297}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Mouse action support for sending window to different activity ({{bug |305758}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Windows list icon does not show up in &amp;quot;Walk Through Desktop List&amp;quot; ({{bug |306187}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Game mode ({{bug |306448}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Animate Window Maximize/Restore ({{bug |308990}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Common animation settings for effects of same type ({{bug |308991}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Use Resize Area in Aurorae ({{bug |308992}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Configurable quick tile area config GUI ({{bug |308993}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Move ExtendedBorderRegion to stable  API ({{bug |308994}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Support shortened titles like in bespin in all decorations ({{bug |308995}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Mouse Click effect ({{bug |309006}}, Review 105780)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Decorations not visible ({{bug |305875}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|drag-and-drop between windows by cover switch alt-tab causes apps to crash ({{bug |179077}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add a rule to select the screen ({{bug |183996}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Need Mouse navigation in flip switch mode ({{bug |244439}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297634}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297635}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297637}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Allow direct rendering with fglrx ({{bug |301103}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Don't use OpenGL matrix stack in OpenGL 2 backend ({{bug |303093}}, Review 105455)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Refactor Screen/Window PaintData ({{bug |303314}}, Review 105141)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Rapid flickering in locked screen -- makes it difficult to unlock ({{bug |303579}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|double click menu to close needs GUI config ({{bug |305738}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Toplevel::windowType() needs performance improvements ({{bug |306384}}, Review 106349)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|GLPlatform should recommend either OpenGL1 or OpenGL2 compositing ({{bug |306436}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Zoom effect broken in master ({{bug |307609}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|kwin fails to build when the GLES support is disabled ({{bug |307866}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|[JJ] Some effect authors are listed as &amp;quot;Name1 &amp;amp; Name2&amp;quot; ({{bug |307928}}, Review 106880)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add screen management actions to window context menus ({{bug |269207}}, Review 106065)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Move Workspace's compositing functionality to own class Compositor ({{bug |299277}}, Review 102420)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Option to disable close on double click in Aurorae ({{bug |301327}}, Review 106160)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Remove Tiling Support From KWin ({{bug |303090}}, Review 105546)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Allow Scripts to add menus to useractions menu ({{bug |303756}}, Review 106285)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Generic QML support for Aurorae Themes ({{bug |303810}}, Review 105768)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Split out Useractions Menu from Workspace ({{bug |305832}}, Review 106085)|mgraesslin@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureInProgress|kwin|Implement color correction (Review 106141)|skeletk13@gmail.com|Casian Andrei}}&lt;br /&gt;
{{FeatureInProgress|oxygen decoration|Implement ExtendedBorderRegion support, to resize windows outside of their actual borders|hugo@oxygen-icons.org|Hugo Pereira Da Costa}}&lt;br /&gt;
{{FeatureDone|oxygen style|Implement BlurBehind semi-transparent tooltips when available|hugo@oxygen-icons.org|Hugo Pereira Da Costa}}&lt;br /&gt;
{{FeatureDone|plasma-wallpapers|Color wallpaper: add listview to display thumbnails for background mode|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Notifications applet to QML|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureDone|System Tray|System tray with interface in QML|dmitry.ashkadov@gmail.com|Dmitry Ashkadov}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Keyboard layout preview|amourphious1992@gmail.com|Shivam Makkar}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|activities|Encrypted activities|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Improve profile error handling (DPMS)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Social Feed|mklapetek@kde.org|Martin Klapetek}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Dolphin|Implement parallel sort algorithm|emmanuelpescosta099@gmail.com|Emmanuel Pescosta}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Dolphin|Add GUI option for the &amp;quot;Rename Inline&amp;quot; setting|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Add &amp;quot;Icon Size&amp;quot; submenu to the Places Panel context menu|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|print-manager|New Print manager KCM and applet (plasmoid) replacement, using C++  |dantti12@gmail.com|Daniel Nicoletti}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Support for Python plugins|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Advanced gid(1) plugin using both ID files and etags|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|As-you-type search for the search plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|Session name API for plugins + automatic ctags database naming|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kate|Add optional document &amp;quot;minimap&amp;quot; to the Symbols view plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kate|Vim Mode Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kdialog|Add support for detailedsorry/detailederror messages|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Improve the search filter bar|francesco.cecconi@gmail.com|Francesco Cecconi}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Add the --separate cmdline option for running in new process|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Make the d&amp;amp;d popup menu optional|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android (including SOK branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Zoom to content of geo file after loading (at least on start-up)|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files thumbnailer|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files metadata extractor|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Rocs|Journal files for projects.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Revisit graph export/import functionality to fully support: TGF, DOT, GML, GraphML|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Main Window UI Reorganization: Editor Toolbar, dialogs, Information Panel|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Edit Menu|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Configuration Dialog Optimizations: Code-Editor, Graph Editor|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|KTouch|Ship ktouch/next|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Smart resizing of training screen with aligned vertical lines|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Prominent hint during training if the user makes repeatedly errors|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|KTouch|Show course descriptions in course selector|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|KTouch|Show a message when keyboard layout visualization isn't available due missing data|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|Analitza|New plotting framework|percy.camilo.ta@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureDone|KAlgebra|Splitted the QML Components from KAlgebraMobile|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|KAlgebra|New plotting plasmoid graphs, in QtQuick|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|Pairs|Pairs Theme editor|marco.calignano@gmail.com|Marco Calignano}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Mark right angles|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkdegames|[http://community.kde.org/KDE_Games/API_cleanup Major cleanup and rewrite] (done, except for the new highscore classes)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''Release team:''' please link to the [[Projects/Games/Porting_to_libkdegames_v5|porting instructions]]  for third-party developers|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Use KGameRenderer and QGraphicsView for all graphics: the gameplay is the same as before.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Remove the status bar. All scores and status messages are in the viewport now.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Allow the displayed speed of moves to be adjusted.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Animate multi-stage moves, to make it easier for a human player to follow their progress.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Show multi-stage moves in an order that is easier to follow.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Validate the loading of saved games and report errors.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Rewrite the main AI class and make it use a true Minimax method.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide a choice of two AI styles, Kepler and Newton, with the possibility to add more.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add settings to choose computer player, AI style and skill level for either or both of players 1 and 2.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add board sizes 3x3 and 4x4, for simplified play.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add a simple Print facility for KSudoku puzzles.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
{{FeatureInProgress|okular|Tiled rendering|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Recursive importer|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Color profile support|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add lyrics view|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KGet|Metalink/HTTP Support|dahalaishraj@gmail.com|Aish Raj Dahal}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
{{FeatureInProgress|ComicStrip|Replace with QML version|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|Calculator|Replace with QML version|luizromario@gmail.com|Luiz Romário Santana Rios}}&lt;br /&gt;
{{FeatureDone|QML Wallpapers|Make it possible to have animated wallpapers written in QtQuick technologies.|aleixpol@blue-systems.com|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|Dictionary KRunner|Look up words in the dictionary by typing in 'define {word}' in krunner.|Jason@zx2c4.com|Jason A. Donenfeld}}&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add tagged unions to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add array indices to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureDone|Umbrello|Line based diagram grid |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello| widget resize and diagram auto resize feature |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello|add spline based association lines to avoid autolayout widget/line overlapping (needs volunteers)|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Ark|Make it possible to disable internal previewer|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>R Rios</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan</id>
		<title>Schedules/KDE4/4.10 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan"/>
				<updated>2012-10-13T14:19:20Z</updated>
		
		<summary type="html">&lt;p&gt;R Rios: Putting the QML Calculator plasmoid&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.10 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.10 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.9 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*todo =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|ksmserver|Merge the new qml based screen locker|mart@kde.org|Marco Martin}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Lanczos Filter broken after screen size changes ({{bug |296065}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for KWin Scripts ({{bug |296774}}, Review 104877)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|KConf Update Script for KWin 4.9 ({{bug |296775}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297634}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297635}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for Window Switching Layouts ({{bug |297636}}, Review 104894)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297637}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Update Documentation for Window Switcher Layouts ({{bug |297638}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|ThumbnailItem allows upscaling of Windows ({{bug |297864}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Increase ABI version for KDecorations ({{bug |299140}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureDone|plasma-wallpapers|Color wallpaper: add listview to display thumbnails for background mode|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Notifications applet to QML|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Refactor into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|print-manager|New Print manager KCM and applet (plasmoid) replacement, using C++  |dantti12@gmail.com|Daniel Nicoletti}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Support for Python plugins|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Advanced gid(1) plugin using both ID files and etags|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Rocs|Journal files for projects.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Revisit graph export/import functionality to fully support: TGF, DOT, GML, GraphML|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|KTouch|Ship ktouch/next|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|Analitza|New plotting framework|percy.camilo.ta@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureDone|KAlgebra|Splitted the QML Components from KAlgebraMobile|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|KAlgebra|New plotting plasmoid graphs, in QtQuick|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureInProgress|Pairs|Pairs Theme editor|marco.calignano@gmail.com|Marco Calignano}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkdegames|[http://community.kde.org/KDE_Games/API_cleanup Major cleanup and rewrite] (done, except for the new highscore classes)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''Release team:''' please link to the [[Projects/Games/Porting_to_libkdegames_v5|porting instructions]]  for third-party developers|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Allow the displayed speed of moves to be adjusted.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Animate multi-stage moves, to make it easier for a human player to follow their progress.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Show multi-stage moves in an order that is easier to follow.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Validate the loading of saved games and report errors.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Rewrite the main AI class and make it use a true Minimax method.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide a choice of two AI methods, Kepler and Newton.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
{{FeatureInProgress|ComicStrip|Replace with QML version|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|Calculator|Replace with QML version|luizromario@gmail.com|Luiz Romário Santana Rios}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>R Rios</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Plasma/QML/API</id>
		<title>Development/Tutorials/Plasma/QML/API</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Plasma/QML/API"/>
				<updated>2011-10-12T08:21:30Z</updated>
		
		<summary type="html">&lt;p&gt;R Rios: /* Popup Applet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction to the Plasmoid QML Declarative API  =&lt;br /&gt;
&lt;br /&gt;
This document provides an overview/reference of the Declarative QML API for Plasmoids. It isn't a full binding to all of Qt or KDE's libraries, but a focused set of bindings designed to make writing Plasmoids fast and easy, while remaining powerful.&lt;br /&gt;
&lt;br /&gt;
The API in this documentation covers the API of the Plasma specific QML components, so only the Declarative part of the API.&lt;br /&gt;
&lt;br /&gt;
The QML ScriptEngine is based upon the Plasma JavaScript engine, making the API of the JavaScript part identical to the one of the JavaScript plasmoids engine.&lt;br /&gt;
To see the api of the global ''Plasmoid'' object, see the [http://techbase.kde.org/Development/Tutorials/Plasma/JavaScript/API#The_Global_plasmoid_Object JavaScript API] documentation.&lt;br /&gt;
(TODO: the JavaScript api page should probably be copied and stripped down the imperative bits not present there, it would make it harder to update tough)&lt;br /&gt;
&lt;br /&gt;
== What Is a Declarative Plasmoid?  ==&lt;br /&gt;
&lt;br /&gt;
To denote that this Plasmoid is a Declarative widget, ensure that in the metadata.desktop file there is this line: &lt;br /&gt;
&lt;br /&gt;
X-Plasma-API=declarativeappletscript&lt;br /&gt;
&lt;br /&gt;
What follows is a description of the Plasma declarative classes instantiable from QML.&lt;br /&gt;
&lt;br /&gt;
= Main Plasma QML Classes =&lt;br /&gt;
&lt;br /&gt;
== Data Engines ==&lt;br /&gt;
While it's possible to fetch data from a Plasma DataEngine in the same way as the [http://techbase.kde.org/Development/Tutorials/Plasma/JavaScript/API#DataEngine JavaScript API], it is preferrable to use the following declarative classes:&lt;br /&gt;
&lt;br /&gt;
=== DataSource ===&lt;br /&gt;
DataSource is a receiver for a dataEngine and can be declared inside QML:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 import org.kde.plasma.core 0.1 as PlasmaCore&lt;br /&gt;
&lt;br /&gt;
 PlasmaCore.DataSource {&lt;br /&gt;
     id: dataSource&lt;br /&gt;
     engine: &amp;quot;time&amp;quot;&lt;br /&gt;
     connectedSources: [&amp;quot;Local&amp;quot;]&lt;br /&gt;
     interval: 500&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Properties ====&lt;br /&gt;
It has the following properties:&lt;br /&gt;
* bool '''valid''' (read only): true when the DataSource is successfully connected to a data engine&lt;br /&gt;
* int '''interval''': interval of polling of the dataengine, if 0 (default value, so no need to specify if you don't need it) no polling will be executed&lt;br /&gt;
* string '''engine''': the plugin name of the dataengine to load, e.g. &amp;quot;nowplaying&amp;quot;, etc.&lt;br /&gt;
* Array(string) '''connectedSources''': all the sources of the dataengine we are connected to (and whose data will appear in the '''data''' property)&lt;br /&gt;
* Array(string) '''sources''' (read only): all the sources available from the dataengine&lt;br /&gt;
* variant map '''data''' (read only): It's the most important property, it's a map of all the data available from the dataengine: its structure will be as follows:&lt;br /&gt;
** each key of the map will be a source name, in '''connectedSources'''&lt;br /&gt;
** each value will be a variant hash, so an hash with strings as keys and any variant as value&lt;br /&gt;
** example: dataSource.data[&amp;quot;Local&amp;quot;][&amp;quot;Time&amp;quot;] indicates the '''Time''' key of the dataengine source called &amp;quot;Local&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Signals ====&lt;br /&gt;
It has the following signals:&lt;br /&gt;
&lt;br /&gt;
Note that javascript/qml applies the 'on' prefix to signals. So the actual signal name in C++ which is e.g. '''newData'''(...) becomes '''onNewData'''(...).&lt;br /&gt;
&lt;br /&gt;
* '''onNewData'''(String sourceName, Plasma::DataEngine::Data data)&lt;br /&gt;
* '''onSourceAdded'''(String source)&lt;br /&gt;
* '''onSourceRemoved'''(String source)&lt;br /&gt;
* '''onSourceConnected'''(String source)&lt;br /&gt;
* '''onSourceDisconnected'''(String source)&lt;br /&gt;
* '''onIntervalChanged'''()&lt;br /&gt;
* '''onEngineChanged'''()&lt;br /&gt;
* '''onDataChanged'''()&lt;br /&gt;
* '''onConnectedSourcesChanged'''()&lt;br /&gt;
* '''onSourcesChanged'''()&lt;br /&gt;
&lt;br /&gt;
==== Methods ====&lt;br /&gt;
It has the following methods:&lt;br /&gt;
* StringList keysForSource(String source): lists all the keys corresponding to a certain source: for instance in the &amp;quot;time&amp;quot; dataengine, for the &amp;quot;Local&amp;quot; source, keys will be:&lt;br /&gt;
** &amp;quot;Timezone Continent&amp;quot;&lt;br /&gt;
** &amp;quot;Offset&amp;quot;&lt;br /&gt;
** &amp;quot;Timezone&amp;quot;&lt;br /&gt;
** &amp;quot;Time&amp;quot;&lt;br /&gt;
** &amp;quot;Date&amp;quot;&lt;br /&gt;
** &amp;quot;Timezone City&amp;quot;&lt;br /&gt;
* Service serviceForSource(String source): returns a Plasma service that corresponds a given source: see the section about services for how to use it.&lt;br /&gt;
* void connectSource(String source): adds to '''connectedSources''' the new source&lt;br /&gt;
* void disconnectSource(String source): removes that source from '''connectedSources'''&lt;br /&gt;
&lt;br /&gt;
=== Service ===&lt;br /&gt;
Due to their imperative nature, Plasma Services are not instantiated as QML classes, but rather created out of a '''DataSource''' with the method '''serviceForSource''' and used in the JavaScript portions of the QML files.&lt;br /&gt;
This following example is a simplified version from the Now Playing QML widget in the kdeexamples git repository: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  var service = dataSource.serviceForSource(activeSource)&lt;br /&gt;
  var operation = service.operationDescription(&amp;quot;seek&amp;quot;)&lt;br /&gt;
  operation.seconds = 10&lt;br /&gt;
&lt;br /&gt;
  var job = service.startOperationCall(operation)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Here dataSource is the id of a DataSource object, and activeSource is a source contained in one of its '''connectedSources'''.&lt;br /&gt;
The service provides an operation called &amp;quot;seek&amp;quot;, with a parameter called &amp;quot;seconds&amp;quot;, that can be written on it as a property of a JavaScript object.&lt;br /&gt;
&lt;br /&gt;
=== ServiceJob ===&lt;br /&gt;
It is necessary to monitor the result of a Service operation, it's possible to connect to the '''finished''' signal provided by the job return paramenter of the '''startOperationCall''' service method.&lt;br /&gt;
The '''finished''' signal has the same job as parameter, from which is possible to check the variant '''result''' property, to check the result.&lt;br /&gt;
&lt;br /&gt;
=== DataModel ===&lt;br /&gt;
Some data engines return as their data something that can be interpreted as a list of items, rather than simple key/value pairs.&lt;br /&gt;
QML provides some item views such as '''ListView''', '''GridView''' and '''Repeater'''.&lt;br /&gt;
The '''DataModel''' QML object can provide, based on a DataSource a model suitable for those QML item views.&lt;br /&gt;
&lt;br /&gt;
It has the following properties:&lt;br /&gt;
* DataSource '''dataSource''': the id of an existing (and connected) DataSource&lt;br /&gt;
* String '''sourceFilter''': it's a regular expression. If the DataSource is connected to more than one source, only inserts data from sources matching this filter expression in the model. To, for example, have a source watch all sources beginning with say &amp;quot;name:&amp;quot;, the required regexp would be sourceFilter: &amp;quot;name:.*&amp;quot;&lt;br /&gt;
* String '''keyRoleFilter''': it's a regular expression. Only data with keys that match this filter expression will be inserted in the model&lt;br /&gt;
* int '''count''' (read only): how many items are in the model&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 ListView {&lt;br /&gt;
   model: PlasmaCore.DataModel {&lt;br /&gt;
        dataSource: microblogSource&lt;br /&gt;
        keyRoleFilter: &amp;quot;[\\d]*&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    delegate: Text {&lt;br /&gt;
        text: title&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example, ''microblogSource'' is the id of a DataSource, and inserts in the model only entries that have a number as the key name (matched with [\\d]*, in this case tweets ids)&lt;br /&gt;
&lt;br /&gt;
Each item in the model will have the form of a variant hash: all the keys of the hash will be registered as model role names, in the example, &amp;quot;title&amp;quot; is a role of the model containing a string (also reachable with model[&amp;quot;title&amp;quot;]).&lt;br /&gt;
&lt;br /&gt;
A special reserved role will always be present: '''&amp;quot;DataEngineSource&amp;quot;''': it will contain the name of the data engine source that gave origin to this item. Therefore, if you want merely the string of the current source that the model is at...do model[&amp;quot;DataEngineSource&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Note that view.currentItem holds the item currently selected. However, due to (http://bugreports.qt.nokia.com/browse/QTBUG-16347) this does not work in PathView. A workaround is to make your own.&lt;br /&gt;
&lt;br /&gt;
=== SortFilterModel ===&lt;br /&gt;
SortFilterModel is a proxy model for easy sorting and/or filtering of the items in a DataModel (or any other QAbstractItemModel subclass that has been registered in QML with setContextProperty from a C++ application)&lt;br /&gt;
Properties:&lt;br /&gt;
* model '''sourceModel'''&lt;br /&gt;
* String '''filterRegExp'''&lt;br /&gt;
* String '''filterRole'''&lt;br /&gt;
* String '''sortRole'''&lt;br /&gt;
* Qt::SortOrder '''sortOrder'''&lt;br /&gt;
* int '''count''' (read only)&lt;br /&gt;
&lt;br /&gt;
== Popup Applet ==&lt;br /&gt;
So you want your QML applet to be a popup applet, like the device notifier (an icon in the panel shows and expands the applet)?&lt;br /&gt;
&lt;br /&gt;
Why, that's easy.&lt;br /&gt;
&lt;br /&gt;
To change your plasmoid from being a regular boring one, in your '''metadata.desktop''', simply change this following line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
ServiceTypes=Plasma/Applet&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
ServiceTypes=Plasma/Applet,Plasma/PopupApplet&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then in the main QML item's Component.onCompleted, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
    plasmoid.popupIcon = &amp;quot;konqueror&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Plasma Themes ==&lt;br /&gt;
&lt;br /&gt;
=== Theme ===&lt;br /&gt;
This class instantiable from QML provides access to the Plasma Theme colors and other facilities such as fonts.&lt;br /&gt;
It has the following properties:&lt;br /&gt;
* String '''themeName''' (read only)&lt;br /&gt;
* QFont '''font''' (read only)&lt;br /&gt;
* bool '''windowTranslucentEnabled''' (read only)&lt;br /&gt;
* Url '''homepage''' (read only)&lt;br /&gt;
* bool '''useGlobalSettings''' (read only)&lt;br /&gt;
* QString '''wallpaperPath''' (read only)&lt;br /&gt;
* color '''textColor''' (read only)&lt;br /&gt;
* color '''highlightColor''' (read only)&lt;br /&gt;
* color '''backgroundColor''' (read only)&lt;br /&gt;
* color '''buttonTextColor''' (read only)&lt;br /&gt;
* color '''buttonBackgroundColor''' (read only)&lt;br /&gt;
* color '''linkColor''' (read only)&lt;br /&gt;
* color '''visitedLinkColor''' (read only)&lt;br /&gt;
* color '''visitedLinkColor''' (read only)&lt;br /&gt;
* color '''buttonHoverColor''' (read only)&lt;br /&gt;
* color '''buttonFocusColor''' (read only)&lt;br /&gt;
* color '''viewTextColor''' (read only)&lt;br /&gt;
* color '''viewBackgroundColor''' (read only)&lt;br /&gt;
* color '''viewHoverColor''' (read only)&lt;br /&gt;
* color '''viewFocusColor''' (read only)&lt;br /&gt;
* String '''styleSheet''' (read only)&lt;br /&gt;
&lt;br /&gt;
=== Svg ===&lt;br /&gt;
Declaring a Svg element instantiates a Plasma Svg instance. This class doesn't draw anything. For drawing, SvgItem is used.&lt;br /&gt;
Properties:&lt;br /&gt;
* QSize '''size'''&lt;br /&gt;
* bool '''multipleImages'''&lt;br /&gt;
* String '''imagePath''' can be anything in the '''desktoptheme/''' folder. For more information on what is available, see [http://techbase.kde.org/Projects/Plasma/Theme#Current_Theme_Elements Plasma Theme Elements]&lt;br /&gt;
* bool '''usingRenderingCache'''&lt;br /&gt;
&lt;br /&gt;
Methods:&lt;br /&gt;
* QPixmap pixmap(QString elementID)&lt;br /&gt;
* void resize(qreal width, qreal height)&lt;br /&gt;
* void resize(): resets the image to its default dimension&lt;br /&gt;
* QSize elementSize(QString elementId)&lt;br /&gt;
* QRectF elementRect(QString elementId)&lt;br /&gt;
* bool hasElement(QString elementId)&lt;br /&gt;
* bool isValid(): true if valid svg file&lt;br /&gt;
&lt;br /&gt;
Sample Code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
    PlasmaCore.Svg {&lt;br /&gt;
        id: mySvg&lt;br /&gt;
        imagePath: &amp;quot;widgets/line&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SvgItem ===&lt;br /&gt;
It's a graphical element that will actually paint a Svg instance.&lt;br /&gt;
Properties:&lt;br /&gt;
* String '''elementId''': what element to render. If null, the whole svg will be rendered&lt;br /&gt;
* Svg '''svg''': instance of the Svg class mentioned above&lt;br /&gt;
* QSizeF '''naturalSize''' (read only): default size of the Svg&lt;br /&gt;
* bool '''smooth''': paint with antialias (default false)&lt;br /&gt;
&lt;br /&gt;
Sample Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
    PlasmaCore.SvgItem {&lt;br /&gt;
        id: mySvgItem&lt;br /&gt;
        anchors {&lt;br /&gt;
            top: parent.top&lt;br /&gt;
            left: parent.left&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        width: 300&lt;br /&gt;
        height: 3&lt;br /&gt;
&lt;br /&gt;
        svg: mySvg&lt;br /&gt;
        elementId: &amp;quot;horizontal-line&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== FrameSvgItem ===&lt;br /&gt;
It's a graphical element that paints a Plasma::FrameSvg, so a rectangular image composed by 9 elements contained in a Svg file, useful for things like buttons and frames.&lt;br /&gt;
&lt;br /&gt;
Flags&lt;br /&gt;
* EnabledBorders: combination of TopBorder | BottomBorder | LeftBorder | RightBorder, NoBorder if no border of the frame is enabled&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
* String '''imagePath''': path of the file relative to the Plasma Theme, for instance &amp;quot;widgets/background&amp;quot;&lt;br /&gt;
* String '''prefix''': a FrameSvg can contain multiple frames, for instance a button contains &amp;quot;normal&amp;quot;, &amp;quot;raised&amp;quot; and &amp;quot;pressed&amp;quot;&lt;br /&gt;
* Margins '''margins''' (read only): the margins of the frame, see documentation below&lt;br /&gt;
* EnabledBorders '''enabledBorders''': what borders are enabled&lt;br /&gt;
&lt;br /&gt;
==== Margins ====&lt;br /&gt;
Properties:&lt;br /&gt;
* real '''left''' (read only)&lt;br /&gt;
* real '''top''' (read only)&lt;br /&gt;
* real '''right''' (read only)&lt;br /&gt;
* real '''bottom''' (read only)&lt;br /&gt;
&lt;br /&gt;
Sample Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
PlasmaCore.FrameSvgItem {&lt;br /&gt;
    id: myFrameSvgItem&lt;br /&gt;
    anchors.fill: parent&lt;br /&gt;
    imagePath: &amp;quot;translucent/dialogs/background&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Top Level windows ==&lt;br /&gt;
&lt;br /&gt;
=== Dialog ===&lt;br /&gt;
Dialog instantiates a Plasma::Dialog, it will be a Plasma themed top level window that can contain any QML component.&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
* Item mainItem: the Item contained in the Dialog, it can be any QML Item instance&lt;br /&gt;
* bool '''visible''': if the window (not the mainItem) is visible&lt;br /&gt;
* int '''x''': x position of the window in screen coordinates&lt;br /&gt;
* int '''y''': y position of the window in screen coordinates&lt;br /&gt;
* int '''width''' (read only): total width of the dialog, including margins&lt;br /&gt;
* int '''height''' (read only): total height of the dialog, including margins&lt;br /&gt;
* int '''windowFlags''': Qt window flags of the Dialog&lt;br /&gt;
* Margins '''margins''' (read only): margins of the Dialog&lt;br /&gt;
&lt;br /&gt;
Methods:&lt;br /&gt;
* QPoint popupPosition(Item item, Qt::Alignment alignment=Qt::AlignLeft): the suggested position for the Dialog if it has to be correctly placed as popup of the QML item passed as parameter.&lt;br /&gt;
* void setAttribute(Qt::WindowAttribute attribute, bool on): set an attribute for the dialog window&lt;br /&gt;
&lt;br /&gt;
==== Margins ====&lt;br /&gt;
Properties:&lt;br /&gt;
* real '''left''' (read only)&lt;br /&gt;
* real '''top''' (read only)&lt;br /&gt;
* real '''right''' (read only)&lt;br /&gt;
* real '''bottom''' (read only)&lt;br /&gt;
&lt;br /&gt;
=== ToolTip ===&lt;br /&gt;
Declaring a ToolTip instance makes it possible to use Plasma tooltips with any QML item.&lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
* Item '''target''': the QML item we want to show a tooltip of&lt;br /&gt;
* String '''mainText'''&lt;br /&gt;
* String '''subText'''&lt;br /&gt;
* String '''image''': freedesktop compliant icon name as image of the tooltip&lt;br /&gt;
&lt;br /&gt;
= Plasma QtComponents (4.8) =&lt;br /&gt;
TODO&lt;/div&gt;</summary>
		<author><name>R Rios</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials_(pt_BR)</id>
		<title>Development/Tutorials (pt BR)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials_(pt_BR)"/>
				<updated>2009-02-27T07:41:21Z</updated>
		
		<summary type="html">&lt;p&gt;R Rios: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials}}&lt;br /&gt;
&lt;br /&gt;
Tutoriais são a maneira mais rápida de encontrar o que o KDE pode oferecer à você, e como fazê-lo. Abaixo encontra-se uma lista dos tutoriais atualmente disponíveis '''para KDE4'''. Material para KDE3 e KDE2 está disponível no final da página.&lt;br /&gt;
&lt;br /&gt;
== Introdução à programação para KDE 4 ==&lt;br /&gt;
Você está interessado em escrever aplicações para KDE 4? Esta séria de tutoriais é completamente voltada a nova programação para o KDE.&lt;br /&gt;
;[[Development/Tutorials/First program_%28pt_BR%29|Alô Mundo]]&lt;br /&gt;
:''Uma introdução premilinar aos princípios da programação do KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KXmlGuiWindow (pt_BR)|Criando a janela principal]]&lt;br /&gt;
:''Este tutorial mostra à você a mágica da coisa mais importante de uma aplicação: a janela principal, ou &amp;quot;main window&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KActions|Usando KActions]]&lt;br /&gt;
:''Como adicionar ações aos menus e barra de ferramentas.''&lt;br /&gt;
&lt;br /&gt;
== Princípios ==&lt;br /&gt;
;[[Development/Tutorials/KDE4 Porting Guide|Migrando sua aplicação]]&lt;br /&gt;
:''Ajuda migrando aplicações do Qt3/KDE3 para Qt4/KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/CMake_(pt_BR)|Introdução ao CMake]]&lt;br /&gt;
:''Como usar o sistema de contrução CMake usado pelo KDE4.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Common Programming Mistakes|Erros comuns de programação]]&lt;br /&gt;
:''Vários erros comuns cometidos durante o desenvolvimento de aplicações Qt e KDE e como evitá-los.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using Qt Designer|Usando Qt Designer para construir interfaces de usuário]]&lt;br /&gt;
:''Como criar arquivos UI com designer, e como integrá-los em um programa KDE.''&lt;br /&gt;
&lt;br /&gt;
== Testando e Depurando ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Debugging|Depurando sua aplicação]]&lt;br /&gt;
:''Dicas, ferramentas e técnicas para usar enquanto depura sua aplicação KDE.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Unittests|Escrevendo Unittests para Qt4 e KDE4 com QTestLib]] ([http://developer.kde.org/documentation/tutorials/writingunittests/writingunittests.html Original link])&lt;br /&gt;
:''Tutorial por [mailto:bradh@frogmouth.net Brad Hards] que explica como escrever testes de unidade usando o framework QTestLib. Ele é apresentado como um exemplo que deu base ao tutorial, e está ainda em desenvolvimento.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Code_Checking|Maneiras semi-automáticas de detectar erros no código]]&lt;br /&gt;
:''Técnicas que você pode usar para detectar erros no código KDE.''&lt;br /&gt;
&lt;br /&gt;
== Gerenciando dados de configuração com KConfig ==&lt;br /&gt;
;[[Development/Tutorials/KConfig|Introdução ao KConfig]]&lt;br /&gt;
:''Uma visão geral das classes KConfig e como usá-las no código da sua aplicação.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KConfig XT|Usando KConfig XT]]&lt;br /&gt;
:''Tutorial de como usar de forma eficiente o framework KConfig XT.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Updating KConfig Files|Atualizando arquivos do KConfig]]&lt;br /&gt;
:''Tutorial de como escrever um script de atualização que mantém as mudanças no arquivo de configuração da sua aplicação sincronizadas com arquivo de configuração já existente do usuário''&lt;br /&gt;
&lt;br /&gt;
== Serviços: Aplicações e Plugins ==&lt;br /&gt;
;[[Development/Tutorials/Services/Introduction|Introdução ao Framework de Serviços]]&lt;br /&gt;
:''Uma visão geral do framework de serviços no KDE e o que ele fornece ao desenvolvedor da aplicação. Abrange o cache de configuração do sistema (SyCoCa), os arquivos fonte e como pode ser usada a informação indexada.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Traders|Procurando Serviços Usando Trader Queries]]&lt;br /&gt;
:''Como encontrar serviços, tais como plugin ou mimetypes, que são indexados no SyCoCa usando Trader Query Syntax''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Plugins|Criando e Carregando Plugins Usando KService]]&lt;br /&gt;
:''Aprenda como definir tipos de plugin customizáveis, procurar plugins instalados (incluindo plugins de terceiros) e carregá-los de um modo fácil e portável usando KService.''&lt;br /&gt;
&lt;br /&gt;
== Localização ==&lt;br /&gt;
;[[Development/Tutorials/Localization/Unicode|Introdução ao Unicode]]&lt;br /&gt;
:''Uma introdução do porquê o Unicode é usado para manipular os dados nas aplicações KDE.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n|Escrevendo Aplicações Pensando em Localização]]&lt;br /&gt;
:''Este tutorial abrange o que a localização é, por que ela é importante e como assegurar-se que sua aplicação está pronta para ser localizada. Uma leitura obrigatória a todos os desenvolvedores de aplicação.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Mistakes|Evitando Dificuldades Comuns em Localização]]&lt;br /&gt;
:''Há muitos erros comuns que previnem as aplicações de iniciar a localização apropriadamente. Descrobra quais eles são e como facilmente evita-los neste tutorial.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/Building KDE's l10n Module|Construindo Modulo de Localização KDE]]&lt;br /&gt;
:''Construíndo e instalando suporte à linguagem do Modulo de localizacão KDE (l10n) é uma boa ideia trabalhar em aplicações no repositorio KDE principal. Fazendo isso irá permitir a voce testar sua aplicação com outra linguagem e pequenos problemas. Aprenda como fazer isso apenas neste tutorial.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Build Systems|Incorpore i18n no Sistema de Construção]]&lt;br /&gt;
:''Quando sua aplicação esta pronta para ser localizada, o proximo passo é para assegurar que os arquivos de traduções são construídos automaticamente e mante-los atualizados. Este tutorial cobre as adições necessarias no CMakeFiles.txt e também o processo de distribuir o catalogo de mensagens resultantes com suas aplicações.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Challenges|Desafios e Soluções Comuns i18n]]&lt;br /&gt;
:''Este tutorial cobre desafios que você eventualmente venha a ter traduzindo livros de mão e outros dados existentes fora do código fonte,  gerencie e combine obsoletos arquivos .po, distribua com nível fixo, codique em outras linguagens que o Inglês e crie 'release' independentes de ou migre aplicações entre modulos KDE.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n_Semantics|Semantic Markup of Messages]]&lt;br /&gt;
:''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.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Krazy|Automated i18n Code Checking]]&lt;br /&gt;
:''The Krazy code checker scans KDE's code and reports common i18n mistakes.''&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/API_Documentation|Documentação de API]]&lt;br /&gt;
:''Este tutorial explica como documentar suas APIs corretamente.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Man_Pages|Man Pages]]&lt;br /&gt;
:''Writing and Generating Reference Manual Pages.''&lt;br /&gt;
&lt;br /&gt;
== Application Automation and Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== D-Bus ===&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Introduction|Introduction to D-Bus]]&lt;br /&gt;
:''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.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Accessing Interfaces|Accessando Interfaces D-Bus]]&lt;br /&gt;
:''Um guia passo-a-passo para chamar métodos D-Bus e conectar aos sinais D-Bus usando QtDBus.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Intermediate_D-Bus|Intermediate D-Bus]]&lt;br /&gt;
:''Tips to make use of QtDBus when faced with problematic real-world interfaces.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Creating Interfaces|Criando interfaces D-Bus]]&lt;br /&gt;
:''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.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Autostart Services|D-Bus Autostart Services]]&lt;br /&gt;
:''Turn your application into a D-Bus autostart service with this tutorial. This D-Bus feature, also known as &amp;quot;D-Bus service activation&amp;quot;, 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.''&lt;br /&gt;
; [[Development/Tutorials/Porting_to_D-Bus|Migrando do DCOP para o D-Bus]]&lt;br /&gt;
: ''Migre suas aplucação do DCOP para o D-Bus com este acessível guia.''&lt;br /&gt;
&lt;br /&gt;
=== Konqueror ===&lt;br /&gt;
; [[Development/Tutorials/Creating Konqueror Service Menus|Creating Konqueror Service Menus]]&lt;br /&gt;
:''This tutorial shows you how to create mimetype-specific actions in Konqueror's context menu (aka &amp;quot;servicemenus&amp;quot;).''&lt;br /&gt;
&lt;br /&gt;
=== Kross ===&lt;br /&gt;
; [[Development/Tutorials/Kross/Introduction|Introdução ao Kross]]&lt;br /&gt;
:''An introduction to the Kross Scripting Framework.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Hello_World|Hello World]]&lt;br /&gt;
:''A first application with working kross code.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Scripts-as-Plugins|Scripts como Plugins com Kross]]&lt;br /&gt;
:''This tutorial provides a step-by-step introduction how to integrate scripts as plugins into a KDE application.''&lt;br /&gt;
&lt;br /&gt;
=== KOffice ===&lt;br /&gt;
; [[Development/Tutorials/KOffice visão geral]]&lt;br /&gt;
:''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.&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Write a Flake Plugin|Creating KOffice Flake Plugins]]&lt;br /&gt;
:''This tutorial shows you how you can build a plugin for KOffice applications to allow you embed content in ODF documents using Flake.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/KWord Scripting|KWord Scripting]]&lt;br /&gt;
:''This tutorial shows how to script KWord with Python, Ruby or JavaScript using Kross.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/KSpread Scripting|KSpread Scripting]]&lt;br /&gt;
:''This tutorial shows how to script KSpread with Python, Ruby or JavaScript using Kross.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Krita Scripting|Krita Scripting]]&lt;br /&gt;
:''This tutorial shows how to script Krita with Python, Ruby or JavaScript using Kross.''&lt;br /&gt;
&lt;br /&gt;
=== SuperKaramba ===&lt;br /&gt;
; [[Development/Tutorials/SuperKaramba|Tutorial SuperKaramba]]&lt;br /&gt;
:''Este tutorial fornece uma visão geral do SuperKaramba, arquivos de tema e scripts com Python, Ruby e JavaScript.''&lt;br /&gt;
&lt;br /&gt;
== Busca e Metadados ==&lt;br /&gt;
&lt;br /&gt;
=== Strigi ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing file analyzers|Writing file analyzers]]&lt;br /&gt;
:''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.''&lt;br /&gt;
&lt;br /&gt;
=== [http://nepomuk.kde.org Nepomuk] ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Quickstart|Nepomuk Quickstart]]&lt;br /&gt;
:''How to use Nepomuk resources in a quick and painless way without much fuss.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/RDFIntroduction|RDF and Ontologies in Nepomuk]]&lt;br /&gt;
:''An introduction to RDF and the usage of ontologies in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Resources|Handling Resources with Nepomuk]]&lt;br /&gt;
:''Nepomuk is the KDE library which provides easy access to metadata in the Nepomuk system. Learn how to make your application create and read metadata using the Nepomuk system.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/ResourceGenerator|Using the Nepomuk Resource Generator]]&lt;br /&gt;
:''Nepomuk includes a resource generator which creates convenience classes for handling metadata.''&lt;br /&gt;
&lt;br /&gt;
== Hardware Awareness (Solid) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Tutorials|Introducão ao Solid]]&lt;br /&gt;
:''An introduction to using the Solid hardware discovery and interaction system in KDE applications.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Network_Tutorial|Acessando Informações da Rede]]&lt;br /&gt;
:''Como usar o sistema Solid para obter informações sobre a rede''&lt;br /&gt;
&lt;br /&gt;
== Multimedia (Phonon) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Phonon/Introduction|Phonon]]&lt;br /&gt;
:''How to start with the multimedia API''&lt;br /&gt;
&lt;br /&gt;
== Plasma ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/GettingStarted_(pt_BR)|Getting Started With Plasmoids]]&lt;br /&gt;
:''Criando seu primeiro plasmoid em C++ com fundo de tela SVG, ícone e texto''&lt;br /&gt;
&lt;br /&gt;
== Kate / Kwrite ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor Plugins|Getting Started With KTextEditor Plugins]]&lt;br /&gt;
:''Criando seu primeiro plugin''&lt;br /&gt;
&lt;br /&gt;
==Printing==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Hello World|Hello World]]&lt;br /&gt;
:''Introduction to the KDE printing system''&lt;br /&gt;
&lt;br /&gt;
;TODO Print Dialog&lt;br /&gt;
:''Using the KDE print dialog''&lt;br /&gt;
&lt;br /&gt;
== Get Hot New Stuff ==&lt;br /&gt;
; [[Development/Tutorials/Introduction to Get Hot New Stuff|Introduction to Get Hot New Stuff]]&lt;br /&gt;
:''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.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KNewStuffSecure|KNewStuff Secure]] ([http://developer.kde.org/documentation/tutorials/knewstuffsecure/index.html Original Link])&lt;br /&gt;
:''Tutorial showing how to share resources in a secured way (KDE 3.4 and later).''  By Andr&amp;amp;#225;s Mantia &amp;amp;lt;amantia@kde.org&amp;amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Rapid Application Development ==&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Python introduction to signals and slots|101 Introduction to signals and slots]]&lt;br /&gt;
:''A simple introduction to Qt's signal and slot architecture.''&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
;[http://developer.kde.org/language-bindings/ruby/kde3tutorial/index.html KDE Ruby Korundum tutorial]&lt;br /&gt;
:''A ruby version of Antonio Larrosa Jim&amp;amp;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.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Qt4_Ruby_Tutorial|Qt4 Ruby Tutorial]]&lt;br /&gt;
:''Trolltech's fabulous introductory tutorial to Qt, translated to Ruby.''&lt;br /&gt;
&lt;br /&gt;
=== Shell ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Shell_Scripting_with_KDE_Dialogs|Shell Scripting with KDE dialogs]] ([http://developer.kde.org/documentation/tutorials/kdialog/t1.html Original Link]) &lt;br /&gt;
:''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.''&lt;br /&gt;
&lt;br /&gt;
== Outros tutoriais ==&lt;br /&gt;
&lt;br /&gt;
=== Usando a biblioteca KDE Games ===&lt;br /&gt;
;[[Development/Tutorials/Games/KStandardGameAction| KStandardGameAction]]&lt;br /&gt;
:''Usando o libkdegames para criar seu jogo nos moldes do padrão kdegames''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Games/Highscores| Highscores]]&lt;br /&gt;
:''Implementando uma simples tabela de pontuação dentro de seu jogo''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Games/Theme Selector| Theme Selector]]&lt;br /&gt;
:''Usando o diálogo de seleção de temas do libkdegames''&lt;br /&gt;
&lt;br /&gt;
=== 2D Plotting (KPlotWidget) ===&lt;br /&gt;
;[[Development/Tutorials/KPlotWidget|Using the KDE data-plotting widget]]&lt;br /&gt;
:''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).''&lt;br /&gt;
&lt;br /&gt;
=== Spelling and Grammar Checking (Sonnet) ===&lt;br /&gt;
;[[Development/Tutorials/Sonnet/SonnetTutorial|Adding spell-checking or grammar-checking to KDE applications]]&lt;br /&gt;
:''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.''&lt;br /&gt;
&lt;br /&gt;
=== Pixmap cache (KPixmapCache) ===&lt;br /&gt;
;[[Development/Tutorials/KPixmapCache|Using the KDE pixmap cache]]&lt;br /&gt;
:''This tutorial shows how to use KPixmapCache to cache e.g. pixmaps generated from SVGs or some data.''&lt;br /&gt;
&lt;br /&gt;
== KDE2 and KDE3 Materials ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE3|KDE3 Tutorials]]&lt;br /&gt;
:''These tutorials cover topics related to KDE3.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE2|KDE2 Tutorials]]&lt;br /&gt;
:''These tutorials cover topics related to KDE2.''&lt;br /&gt;
&lt;br /&gt;
[[Category:KDE4]]&lt;/div&gt;</summary>
		<author><name>R Rios</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials_(pt_BR)</id>
		<title>Development/Tutorials (pt BR)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials_(pt_BR)"/>
				<updated>2009-02-27T07:39:19Z</updated>
		
		<summary type="html">&lt;p&gt;R Rios: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials}}&lt;br /&gt;
&lt;br /&gt;
Tutoriais são a maneira mais rápida de encontrar o que o KDE pode oferecer à você, e como fazê-lo. Abaixo encontra-se uma lista dos tutoriais atualmente disponíveis '''para KDE4'''. Material para KDE3 e KDE2 está disponível no final da página.&lt;br /&gt;
&lt;br /&gt;
== Introdução à programação para KDE 4 ==&lt;br /&gt;
Você está interessado em escrever aplicações para KDE 4? Esta séria de tutoriais é completamente voltada a nova programação para o KDE.&lt;br /&gt;
;[[Development/Tutorials/First program_%28pt_BR%29|Alô Mundo]]&lt;br /&gt;
:''Uma introdução premilinar aos princípios da programação do KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KXmlGuiWindow (pt_BR)|Criando a janela principal]]&lt;br /&gt;
:''Este tutorial mostra à você a mágica da coisa mais importante de uma aplicação: a janela principal, ou &amp;quot;main window&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KActions|Usando KActions]]&lt;br /&gt;
:''Como adicionar ações aos menus e barra de ferramentas.''&lt;br /&gt;
&lt;br /&gt;
== Princípios ==&lt;br /&gt;
;[[Development/Tutorials/KDE4 Porting Guide|Migrando sua aplicação]]&lt;br /&gt;
:''Ajuda migrando aplicações do Qt3/KDE3 para Qt4/KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/CMake|Introdução ao CMake]]&lt;br /&gt;
:''Como usar o sistema de contrução CMake usado pelo KDE4.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Common Programming Mistakes|Erros comuns de programação]]&lt;br /&gt;
:''Vários erros comuns cometidos durante o desenvolvimento de aplicações Qt e KDE e como evitá-los.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using Qt Designer|Usando Qt Designer para construir interfaces de usuário]]&lt;br /&gt;
:''Como criar arquivos UI com designer, e como integrá-los em um programa KDE.''&lt;br /&gt;
&lt;br /&gt;
== Testando e Depurando ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Debugging|Depurando sua aplicação]]&lt;br /&gt;
:''Dicas, ferramentas e técnicas para usar enquanto depura sua aplicação KDE.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Unittests|Escrevendo Unittests para Qt4 e KDE4 com QTestLib]] ([http://developer.kde.org/documentation/tutorials/writingunittests/writingunittests.html Original link])&lt;br /&gt;
:''Tutorial por [mailto:bradh@frogmouth.net Brad Hards] que explica como escrever testes de unidade usando o framework QTestLib. Ele é apresentado como um exemplo que deu base ao tutorial, e está ainda em desenvolvimento.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Code_Checking|Maneiras semi-automáticas de detectar erros no código]]&lt;br /&gt;
:''Técnicas que você pode usar para detectar erros no código KDE.''&lt;br /&gt;
&lt;br /&gt;
== Gerenciando dados de configuração com KConfig ==&lt;br /&gt;
;[[Development/Tutorials/KConfig|Introdução ao KConfig]]&lt;br /&gt;
:''Uma visão geral das classes KConfig e como usá-las no código da sua aplicação.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KConfig XT|Usando KConfig XT]]&lt;br /&gt;
:''Tutorial de como usar de forma eficiente o framework KConfig XT.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Updating KConfig Files|Atualizando arquivos do KConfig]]&lt;br /&gt;
:''Tutorial de como escrever um script de atualização que mantém as mudanças no arquivo de configuração da sua aplicação sincronizadas com arquivo de configuração já existente do usuário''&lt;br /&gt;
&lt;br /&gt;
== Serviços: Aplicações e Plugins ==&lt;br /&gt;
;[[Development/Tutorials/Services/Introduction|Introdução ao Framework de Serviços]]&lt;br /&gt;
:''Uma visão geral do framework de serviços no KDE e o que ele fornece ao desenvolvedor da aplicação. Abrange o cache de configuração do sistema (SyCoCa), os arquivos fonte e como pode ser usada a informação indexada.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Traders|Procurando Serviços Usando Trader Queries]]&lt;br /&gt;
:''Como encontrar serviços, tais como plugin ou mimetypes, que são indexados no SyCoCa usando Trader Query Syntax''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Plugins|Criando e Carregando Plugins Usando KService]]&lt;br /&gt;
:''Aprenda como definir tipos de plugin customizáveis, procurar plugins instalados (incluindo plugins de terceiros) e carregá-los de um modo fácil e portável usando KService.''&lt;br /&gt;
&lt;br /&gt;
== Localização ==&lt;br /&gt;
;[[Development/Tutorials/Localization/Unicode|Introdução ao Unicode]]&lt;br /&gt;
:''Uma introdução do porquê o Unicode é usado para manipular os dados nas aplicações KDE.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n|Escrevendo Aplicações Pensando em Localização]]&lt;br /&gt;
:''Este tutorial abrange o que a localização é, por que ela é importante e como assegurar-se que sua aplicação está pronta para ser localizada. Uma leitura obrigatória a todos os desenvolvedores de aplicação.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Mistakes|Evitando Dificuldades Comuns em Localização]]&lt;br /&gt;
:''Há muitos erros comuns que previnem as aplicações de iniciar a localização apropriadamente. Descrobra quais eles são e como facilmente evita-los neste tutorial.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/Building KDE's l10n Module|Construindo Modulo de Localização KDE]]&lt;br /&gt;
:''Construíndo e instalando suporte à linguagem do Modulo de localizacão KDE (l10n) é uma boa ideia trabalhar em aplicações no repositorio KDE principal. Fazendo isso irá permitir a voce testar sua aplicação com outra linguagem e pequenos problemas. Aprenda como fazer isso apenas neste tutorial.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Build Systems|Incorpore i18n no Sistema de Construção]]&lt;br /&gt;
:''Quando sua aplicação esta pronta para ser localizada, o proximo passo é para assegurar que os arquivos de traduções são construídos automaticamente e mante-los atualizados. Este tutorial cobre as adições necessarias no CMakeFiles.txt e também o processo de distribuir o catalogo de mensagens resultantes com suas aplicações.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Challenges|Desafios e Soluções Comuns i18n]]&lt;br /&gt;
:''Este tutorial cobre desafios que você eventualmente venha a ter traduzindo livros de mão e outros dados existentes fora do código fonte,  gerencie e combine obsoletos arquivos .po, distribua com nível fixo, codique em outras linguagens que o Inglês e crie 'release' independentes de ou migre aplicações entre modulos KDE.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n_Semantics|Semantic Markup of Messages]]&lt;br /&gt;
:''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.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Krazy|Automated i18n Code Checking]]&lt;br /&gt;
:''The Krazy code checker scans KDE's code and reports common i18n mistakes.''&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/API_Documentation|Documentação de API]]&lt;br /&gt;
:''Este tutorial explica como documentar suas APIs corretamente.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Man_Pages|Man Pages]]&lt;br /&gt;
:''Writing and Generating Reference Manual Pages.''&lt;br /&gt;
&lt;br /&gt;
== Application Automation and Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== D-Bus ===&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Introduction|Introduction to D-Bus]]&lt;br /&gt;
:''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.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Accessing Interfaces|Accessando Interfaces D-Bus]]&lt;br /&gt;
:''Um guia passo-a-passo para chamar métodos D-Bus e conectar aos sinais D-Bus usando QtDBus.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Intermediate_D-Bus|Intermediate D-Bus]]&lt;br /&gt;
:''Tips to make use of QtDBus when faced with problematic real-world interfaces.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Creating Interfaces|Criando interfaces D-Bus]]&lt;br /&gt;
:''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.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Autostart Services|D-Bus Autostart Services]]&lt;br /&gt;
:''Turn your application into a D-Bus autostart service with this tutorial. This D-Bus feature, also known as &amp;quot;D-Bus service activation&amp;quot;, 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.''&lt;br /&gt;
; [[Development/Tutorials/Porting_to_D-Bus|Migrando do DCOP para o D-Bus]]&lt;br /&gt;
: ''Migre suas aplucação do DCOP para o D-Bus com este acessível guia.''&lt;br /&gt;
&lt;br /&gt;
=== Konqueror ===&lt;br /&gt;
; [[Development/Tutorials/Creating Konqueror Service Menus|Creating Konqueror Service Menus]]&lt;br /&gt;
:''This tutorial shows you how to create mimetype-specific actions in Konqueror's context menu (aka &amp;quot;servicemenus&amp;quot;).''&lt;br /&gt;
&lt;br /&gt;
=== Kross ===&lt;br /&gt;
; [[Development/Tutorials/Kross/Introduction|Introdução ao Kross]]&lt;br /&gt;
:''An introduction to the Kross Scripting Framework.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Hello_World|Hello World]]&lt;br /&gt;
:''A first application with working kross code.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Scripts-as-Plugins|Scripts como Plugins com Kross]]&lt;br /&gt;
:''This tutorial provides a step-by-step introduction how to integrate scripts as plugins into a KDE application.''&lt;br /&gt;
&lt;br /&gt;
=== KOffice ===&lt;br /&gt;
; [[Development/Tutorials/KOffice visão geral]]&lt;br /&gt;
:''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.&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Write a Flake Plugin|Creating KOffice Flake Plugins]]&lt;br /&gt;
:''This tutorial shows you how you can build a plugin for KOffice applications to allow you embed content in ODF documents using Flake.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/KWord Scripting|KWord Scripting]]&lt;br /&gt;
:''This tutorial shows how to script KWord with Python, Ruby or JavaScript using Kross.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/KSpread Scripting|KSpread Scripting]]&lt;br /&gt;
:''This tutorial shows how to script KSpread with Python, Ruby or JavaScript using Kross.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Krita Scripting|Krita Scripting]]&lt;br /&gt;
:''This tutorial shows how to script Krita with Python, Ruby or JavaScript using Kross.''&lt;br /&gt;
&lt;br /&gt;
=== SuperKaramba ===&lt;br /&gt;
; [[Development/Tutorials/SuperKaramba|Tutorial SuperKaramba]]&lt;br /&gt;
:''Este tutorial fornece uma visão geral do SuperKaramba, arquivos de tema e scripts com Python, Ruby e JavaScript.''&lt;br /&gt;
&lt;br /&gt;
== Busca e Metadados ==&lt;br /&gt;
&lt;br /&gt;
=== Strigi ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing file analyzers|Writing file analyzers]]&lt;br /&gt;
:''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.''&lt;br /&gt;
&lt;br /&gt;
=== [http://nepomuk.kde.org Nepomuk] ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Quickstart|Nepomuk Quickstart]]&lt;br /&gt;
:''How to use Nepomuk resources in a quick and painless way without much fuss.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/RDFIntroduction|RDF and Ontologies in Nepomuk]]&lt;br /&gt;
:''An introduction to RDF and the usage of ontologies in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Resources|Handling Resources with Nepomuk]]&lt;br /&gt;
:''Nepomuk is the KDE library which provides easy access to metadata in the Nepomuk system. Learn how to make your application create and read metadata using the Nepomuk system.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/ResourceGenerator|Using the Nepomuk Resource Generator]]&lt;br /&gt;
:''Nepomuk includes a resource generator which creates convenience classes for handling metadata.''&lt;br /&gt;
&lt;br /&gt;
== Hardware Awareness (Solid) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Tutorials|Introducão ao Solid]]&lt;br /&gt;
:''An introduction to using the Solid hardware discovery and interaction system in KDE applications.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Network_Tutorial|Acessando Informações da Rede]]&lt;br /&gt;
:''Como usar o sistema Solid para obter informações sobre a rede''&lt;br /&gt;
&lt;br /&gt;
== Multimedia (Phonon) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Phonon/Introduction|Phonon]]&lt;br /&gt;
:''How to start with the multimedia API''&lt;br /&gt;
&lt;br /&gt;
== Plasma ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/GettingStarted_(pt_BR)|Getting Started With Plasmoids]]&lt;br /&gt;
:''Criando seu primeiro plasmoid em C++ com fundo de tela SVG, ícone e texto''&lt;br /&gt;
&lt;br /&gt;
== Kate / Kwrite ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor Plugins|Getting Started With KTextEditor Plugins]]&lt;br /&gt;
:''Criando seu primeiro plugin''&lt;br /&gt;
&lt;br /&gt;
==Printing==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Hello World|Hello World]]&lt;br /&gt;
:''Introduction to the KDE printing system''&lt;br /&gt;
&lt;br /&gt;
;TODO Print Dialog&lt;br /&gt;
:''Using the KDE print dialog''&lt;br /&gt;
&lt;br /&gt;
== Get Hot New Stuff ==&lt;br /&gt;
; [[Development/Tutorials/Introduction to Get Hot New Stuff|Introduction to Get Hot New Stuff]]&lt;br /&gt;
:''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.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KNewStuffSecure|KNewStuff Secure]] ([http://developer.kde.org/documentation/tutorials/knewstuffsecure/index.html Original Link])&lt;br /&gt;
:''Tutorial showing how to share resources in a secured way (KDE 3.4 and later).''  By Andr&amp;amp;#225;s Mantia &amp;amp;lt;amantia@kde.org&amp;amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Rapid Application Development ==&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Python introduction to signals and slots|101 Introduction to signals and slots]]&lt;br /&gt;
:''A simple introduction to Qt's signal and slot architecture.''&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
;[http://developer.kde.org/language-bindings/ruby/kde3tutorial/index.html KDE Ruby Korundum tutorial]&lt;br /&gt;
:''A ruby version of Antonio Larrosa Jim&amp;amp;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.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Qt4_Ruby_Tutorial|Qt4 Ruby Tutorial]]&lt;br /&gt;
:''Trolltech's fabulous introductory tutorial to Qt, translated to Ruby.''&lt;br /&gt;
&lt;br /&gt;
=== Shell ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Shell_Scripting_with_KDE_Dialogs|Shell Scripting with KDE dialogs]] ([http://developer.kde.org/documentation/tutorials/kdialog/t1.html Original Link]) &lt;br /&gt;
:''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.''&lt;br /&gt;
&lt;br /&gt;
== Outros tutoriais ==&lt;br /&gt;
&lt;br /&gt;
=== Usando a biblioteca KDE Games ===&lt;br /&gt;
;[[Development/Tutorials/Games/KStandardGameAction| KStandardGameAction]]&lt;br /&gt;
:''Usando o libkdegames para criar seu jogo nos moldes do padrão kdegames''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Games/Highscores| Highscores]]&lt;br /&gt;
:''Implementando uma simples tabela de pontuação dentro de seu jogo''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Games/Theme Selector| Theme Selector]]&lt;br /&gt;
:''Usando o diálogo de seleção de temas do libkdegames''&lt;br /&gt;
&lt;br /&gt;
=== 2D Plotting (KPlotWidget) ===&lt;br /&gt;
;[[Development/Tutorials/KPlotWidget|Using the KDE data-plotting widget]]&lt;br /&gt;
:''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).''&lt;br /&gt;
&lt;br /&gt;
=== Spelling and Grammar Checking (Sonnet) ===&lt;br /&gt;
;[[Development/Tutorials/Sonnet/SonnetTutorial|Adding spell-checking or grammar-checking to KDE applications]]&lt;br /&gt;
:''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.''&lt;br /&gt;
&lt;br /&gt;
=== Pixmap cache (KPixmapCache) ===&lt;br /&gt;
;[[Development/Tutorials/KPixmapCache|Using the KDE pixmap cache]]&lt;br /&gt;
:''This tutorial shows how to use KPixmapCache to cache e.g. pixmaps generated from SVGs or some data.''&lt;br /&gt;
&lt;br /&gt;
== KDE2 and KDE3 Materials ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE3|KDE3 Tutorials]]&lt;br /&gt;
:''These tutorials cover topics related to KDE3.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE2|KDE2 Tutorials]]&lt;br /&gt;
:''These tutorials cover topics related to KDE2.''&lt;br /&gt;
&lt;br /&gt;
[[Category:KDE4]]&lt;/div&gt;</summary>
		<author><name>R Rios</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Talk:Development/Tutorials/CMake_(pt_BR)</id>
		<title>Talk:Development/Tutorials/CMake (pt BR)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Talk:Development/Tutorials/CMake_(pt_BR)"/>
				<updated>2009-02-27T07:22:41Z</updated>
		
		<summary type="html">&lt;p&gt;R Rios: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Traduzido. P.S.: é sempre bom dar uma revisada.&lt;/div&gt;</summary>
		<author><name>R Rios</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/CMake_(pt_BR)</id>
		<title>Development/Tutorials/CMake (pt BR)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/CMake_(pt_BR)"/>
				<updated>2009-02-27T07:20:11Z</updated>
		
		<summary type="html">&lt;p&gt;R Rios: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials/CMake}}&lt;br /&gt;
&lt;br /&gt;
== Introdução ==&lt;br /&gt;
O [http://www.cmake.org CMake] lê arquivos de script e produz arquivos de entrada para o sistema de compilação nativo da plataforma que ele roda. Ele pode criar GNU Makefiles, arquivos de projeto do KDevelop, arquivos de projeto do XCode e arquivos de projeto do Visual Studio.&lt;br /&gt;
&lt;br /&gt;
O [http://www.cmake.org CMake] é software livre e liberado sob a licença BSD.  É desenvolvido pela [http://www.kitware.com Kitware Inc.]&lt;br /&gt;
&lt;br /&gt;
Você pode encontrar mais informação relacionada ao CMake na [[Development/CMake | página principal do CMake]] aqui no TechBase.&lt;br /&gt;
&lt;br /&gt;
== Por que usar CMake? ==&lt;br /&gt;
CMake é a ferramenta oficial do KDE 4, decidida em Março de 2006, primeiramente graças aos seus méritos técnicos quando comparada com automake e unsermake, as antigas ferramentas do KDE:&lt;br /&gt;
* CMake é desenvolvido independentemente do KDE, e pode ser usado por outros projetos, portanto.&lt;br /&gt;
* O tempo de compilação é muito menor, principalmente por não usar mais o libtool&lt;br /&gt;
* É mais fácil escrever arquivos de compilação&lt;br /&gt;
&lt;br /&gt;
== Como compilar o KDE usando CMake==&lt;br /&gt;
&lt;br /&gt;
=== Baixe e instale o CMake ===&lt;br /&gt;
==== Linux, BSD e outros sistemas Unix-like ====&lt;br /&gt;
Baixe a última versão estável do CMake em [http://www.cmake.org/HTML/Download.html].&lt;br /&gt;
&lt;br /&gt;
Depois de baixar, descompacte e compile:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir cmake-build&lt;br /&gt;
$ cd cmake-build&lt;br /&gt;
$ ../bootstrap&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por padrão, isso instalará o CMake em /usr/local, então tenha certeza de pôr /usr/local/bin no seu path de execução. Para mudar o prefixo de instalação (para /usr no Debian, por exemplo), adicione a opção '--prefix=PATH' à linha de comando.&lt;br /&gt;
&lt;br /&gt;
Siga as instruções que se encontram [http://cmake.org/HTML/Download.html#cvs aqui] se quiser usar a versão de desenvolvimento.&lt;br /&gt;
&lt;br /&gt;
==== Windows ====&lt;br /&gt;
Baixe a última versão estável do CMake em [http://www.cmake.org/HTML/Download.html].&lt;br /&gt;
&lt;br /&gt;
Depois de baixar, execute o instalador do CMake.&lt;br /&gt;
&lt;br /&gt;
Por padrão, ele instalará o CMake em C:\Program Files\CMake 2.4, então tenha  certeza de ter &amp;lt;installpath&amp;gt;\bin no seu path de execução.   &lt;br /&gt;
&lt;br /&gt;
Siga as instruções que se encontram [http://cmake.org/HTML/Download.html#cvs aqui] se quiser usar a versão de desenvolvimento.&lt;br /&gt;
&lt;br /&gt;
=== Executar o CMake ===&lt;br /&gt;
&lt;br /&gt;
==== Linux, BSD e outros sistemas Unix-like ====&lt;br /&gt;
Você tem que rodar o CMake para que ele gere os arquivos para seu sistema. Tanto compilações dentro dos códigos fontes (in-source builds) quando fora deles (out-of-source builds) são suportadas pelo CMake, mas in-source builds são prevenidos pela implementação atual do KDE.&lt;br /&gt;
&lt;br /&gt;
Supondo que você tenha o diretório kdelibs/ em ~/src/kdelibs/, faça o seguinte:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ ls&lt;br /&gt;
kdelibs/&lt;br /&gt;
$ mkdir kdelibs-build&lt;br /&gt;
$ cd kdelibs-build&lt;br /&gt;
$ cmake ../kdelibs&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Isso gerará os Makefiles para compilar kdelibs/ em kdelibs-build/.&lt;br /&gt;
&lt;br /&gt;
==== Windows ====&lt;br /&gt;
Você tem que rodar o CMake para que ele gere os arquivos para seu sistema. Tanto compilações dentro dos códigos fontes (in-source builds) quando fora deles (out-of-source builds) são suportadas pelo CMake, mas in-source builds são prevenidos pela implementação atual do KDE.&lt;br /&gt;
&lt;br /&gt;
Supondo que você tenha o diretório kdelibs\ em c:\daten\kde4, faça o seguinte:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
c:\daten\kde4&amp;gt; cd kdelibs\win&lt;br /&gt;
c:\daten\kde4&amp;gt; cmake&lt;br /&gt;
c:\daten\kde4&amp;gt; make &lt;br /&gt;
c:\daten\kde4&amp;gt; make install&lt;br /&gt;
c:\daten\kde4&amp;gt; cd ..&lt;br /&gt;
c:\daten\kde4&amp;gt; mkdir kdelibs-build&lt;br /&gt;
c:\daten\kde4&amp;gt; cd kdelibs-build&lt;br /&gt;
c:\daten\kde4\kdelibs-build&amp;gt; cmake ..\kdelibs&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Isso gerará os Makefiles para compilar kdelibs\ em kdelibs-build\. Veja [[Projects/KDE_on_Windows|KDE no Windows]] para mais informações sobre como compilar o KDE no Windows.&lt;br /&gt;
&lt;br /&gt;
==== Arquivos de projeto do KDevelop 3 ====&lt;br /&gt;
Se você prefere arquivos de projeto para o KDevelop 3 (que serão basicamente Makefiles acompanhados de alguns arquivos extra para o KDevelop), rode-o desta forma:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cmake ../kdelibs -GKDevelop3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Use 'cmake -h' para descobrir que geradores o CMake suporta e outras opções.&lt;br /&gt;
&lt;br /&gt;
==== CMake e Qt4 ====&lt;br /&gt;
Para localizar o Qt 4, o CMake procura por qmake no seu path de execução. CMake ''não'' usa a variável de ambiente QTDIR. Então esteja certo que o primeiro qmake encontrado no path de execução é o que você deve usar.&lt;br /&gt;
&lt;br /&gt;
==== Mais detalhes ====&lt;br /&gt;
Quando CMake finalizar, ele terá criado um arquivo chamado &amp;quot;CMakeCache.txt&amp;quot;.  Esse arquivo contem todas as configurações que o CMake detectou em seu sistema. Se você quiser executar o CMake com outro gerador ou se você quer que o CMake detecte tudo novamente, exclua esse arquivo.&lt;br /&gt;
&lt;br /&gt;
Se o CMake não encontrar alguma coisa, mas você sabe que está em algum lugar, você pode dizer manualmente ao CMake onde encontrá-la. O CMake usa variáveis para guardar essas informações. Essas variáveis são armazenadas no já mencionado arquivo CMakeCache.txt. Você tem três opções para ajustá-las manualmente:&lt;br /&gt;
* informe ao CMake o valor correto pela linha de comando: cmake ../kdelibs -DNOME_DA_VARIAVEL=valor&lt;br /&gt;
* use ccmake, que provê uma GUI baseada em curses para ajustar as variáveis do CMake (rode: ccmake ../kdelibs)&lt;br /&gt;
* modifique CMakeCache.txt diretamente (não recomendado)&lt;br /&gt;
&lt;br /&gt;
Você deve rodar &amp;quot;ccmake ../kdelibs&amp;quot; ao menos uma vez para que você tenha uma ideia de que variáveis o CMake usa. Pressione &amp;quot;T&amp;quot; para ver também as variáveis &amp;quot;avançadas&amp;quot;. Então, se o CMake não encontrar alguma coisa, inicie ccmake e ajuste-o manualmente.&lt;br /&gt;
&lt;br /&gt;
==== Variáveis de linha de comando ====&lt;br /&gt;
&lt;br /&gt;
Algumas variáveis de linha de comando do CMake que você deve querer configurar:&lt;br /&gt;
* '''CMAKE_INSTALL_PREFIX''': cmake ../kdelibs -DCMAKE_INSTALL_PREFIX=/opt/kde4 é equivalente a ./configure --prefix=/opt/kde4&lt;br /&gt;
* '''[[Development/CMake/Build_Types|CMAKE_BUILD_TYPE]]''': decide que tipo de compilação você quer. Você pode escolher entre &amp;quot;debugfull&amp;quot;, &amp;quot;debug&amp;quot;, &amp;quot;profile&amp;quot;, &amp;quot;relwithdebinfo&amp;quot; e &amp;quot;release&amp;quot;. O padrão é &amp;quot;relwithdebinfo&amp;quot;. Vá à página [[Development/CMake/Build_Types|Tipos de compilação do CMake]] para uma explicação mais detalhada.&lt;br /&gt;
* '''KDE4_BUILD_TESTS=ON''': cria Makefiles com programas de teste de compilação e provê alvos 'test'.&lt;br /&gt;
* '''KDE4_TEST_OUTPUT=xml''': Testes unitários usando o framework QTestLib criará arquivos de log formatados em xml.&lt;br /&gt;
* '''KDE4_DISABLE_MULTIMEDIA=ON''': Compila o KDE sem nenhum suporte a multimídia (áudio e vídeo).&lt;br /&gt;
* '''BUILD_foo=OFF''': desativa a compilação para o prjeto no subdiretório 'foo'.&lt;br /&gt;
* '''WITH_foo''': há várias opções - por exemplo, WITH_CUPS ou WITH_Jasper. Se você desativá-las, o CMake não irá nem mesmo tentar procurar por esse pacote. Se estiver ativado, o CMake tentará encontrá-lo. Se falhar com isso, você pode ajustar manualmente, como descrito acima.&lt;br /&gt;
&lt;br /&gt;
=== Variáveis de ambiente ===&lt;br /&gt;
Se você tem cabeçalhos e bibliotecas instalados em localizações fora do padrão que o CMake não pode encontrar, então configure as seguintes variáveis de ambiente. Isso pode ser bastante útil se, por exemplo você instalar kdesupport em ~/install/kdesupport .&lt;br /&gt;
Apesar da nomeação similar, essas variáveis não funcionam se passadas por linha de comando:&lt;br /&gt;
* '''CMAKE_INCLUDE_PATH''', por exemplo, export CMAKE_INCLUDE_PATH=/sw/include&lt;br /&gt;
* '''CMAKE_LIBRARY_PATH''', por exemplo, export CMAKE_LIBRARY_PATH=/sw/lib&lt;br /&gt;
* '''CMAKE_PROGRAM_PATH''', por exemplo, export CMAKE_PROGRAM_PATH=/sw/bin&lt;br /&gt;
&lt;br /&gt;
A partir do CMake 2.6.0, o mesmo efeito das variáveis acima pode ser atingido com apenas um comando:&lt;br /&gt;
* '''CMAKE_PREFIX_PATH''', por exemplo, export CMAKE_PREFIX_PATH=/sw&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para mais informações sobre variáveis, veja [http://www.cmake.org/Wiki/CMake_Useful_Variables esta página do wiki cmake.org]&lt;br /&gt;
&lt;br /&gt;
=== Indo além ===&lt;br /&gt;
Se o CMake finalizar com &amp;quot;Generating done&amp;quot;, não houve erros. Mas, se finalizar com &amp;quot;Configuring done&amp;quot;, então há erros para você consertar.  Se o CMake finalizar com sucesso, rode sua ferramenta de compilação (por exemplo: make, KDevelop, XCode ou MSVC), compile e espere que a compilação termine. Então rode &amp;quot;make install&amp;quot; como root.&lt;br /&gt;
&lt;br /&gt;
Se houve uma falha que diz algo como:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
CMake Error: This project requires some variables to be set,&lt;br /&gt;
and cmake can not find them.&lt;br /&gt;
Please set the following variables:&lt;br /&gt;
X11_XTest_LIB (ADVANCED)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
então está faltando uma biblioteca (ou outra dependência). Para descobrir qual biblioteca é, procure no diretório pela variável que o CMake não pôde encontrar no diretório cmake/modules. No exemplo acima, ela é&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
find_library(X11_XTest_LIB Xtst ${X11_LIB_SEARCH_PATH})&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Logo, a biblioteca que está faltando é Xtst. Então você deve encontrá-la (provavelmente instalando libXtst-devel) e rodar cmake novamente.&lt;br /&gt;
&lt;br /&gt;
== Usando o CMake para uma aplicação simples ==&lt;br /&gt;
&lt;br /&gt;
Aqui está o CMakeLists.txt mais simples possível:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
add_executable(hello main.cpp)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Isso criará um executável chamado &amp;quot;hello&amp;quot; (ou &amp;quot;hello.exe&amp;quot; no Windows) do arquivo de código fonte main.cpp. Você pode misturar arquivos C e C++ se você quiser. Você pode ter múltiplos executáveis e bibliotecas num CMakeLists.txt.  O mesmo arquivo de código fonte pode ser usado em vários alvos: ele será compilado para cada um, independentemente dos outros. Provavelmente, a parte mais importante da linguagem CMake são as variáveis:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
set( MY_SOURCES main.cpp widget.cpp)&lt;br /&gt;
message(STATUS &amp;quot;my sources: ${MY_SOURCES}&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Então, use o comando SET() para definir o valor de uma variável. Se você listar mais de uma string, a variável será uma lista. Uma lista é uma lista de strings separada por pontos-e-vírgulas. Se você definí-la para apenas um item, ela terá apenas um valor. Para pegar o valor da variável, use ${VAR}.&lt;br /&gt;
Você pode realizar iterações na lista usando FOREACH():&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
foreach(next_ITEM ${MY_SOURCES})&lt;br /&gt;
   message(STATUS &amp;quot;next item: ${next_ITEM}&amp;quot;)&lt;br /&gt;
endforeach(next_ITEM ${MY_SOURCES})&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Os comandos do CMake são sensíveis à caixa, assim como nomes de variáveis de de parâmetros.&lt;br /&gt;
&lt;br /&gt;
Você também pode testar várias coisas:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
if (UNIX)&lt;br /&gt;
   message(STATUS &amp;quot;Isto é UNIX (incluindo OS X e CygWin)&amp;quot;)&lt;br /&gt;
endif (UNIX)&lt;br /&gt;
&lt;br /&gt;
if (MSVC)&lt;br /&gt;
   set(MY_SRCS ${MY_SRCS} winextra.cpp)&lt;br /&gt;
endif (MSVC)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Neste segundo exemplo você pode ver também como anexar ítens a uma lista.&lt;br /&gt;
&lt;br /&gt;
Na Wiki do CMake também há um [http://www.cmake.org/Wiki/HowToBuildKDE4Software  tutorial] (em inglês) sobre como usar o CMake para compilar software para o KDE 4. É uma leitura recomendada.&lt;br /&gt;
&lt;br /&gt;
== Usando o CMake para um projeto KDE ==&lt;br /&gt;
&lt;br /&gt;
A seguir, uma CMakeList básica que compila um projeto KDE 4 pequeno:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
project( kde4project )&lt;br /&gt;
find_package( KDE4 REQUIRED )&lt;br /&gt;
include_directories( ${KDE4_INCLUDES} )&lt;br /&gt;
&lt;br /&gt;
set( KDE4ProjectSources kde4mainapp.cpp someclass.cpp someotherclass.cpp )&lt;br /&gt;
&lt;br /&gt;
kde4_add_executable( kde4project ${KDE4ProjectSources} )&lt;br /&gt;
&lt;br /&gt;
target_link_libraries( kde4project ${KDE4_KDEUI_LIBS} ${KDE4_KPARTS_LIBS} )&lt;br /&gt;
&lt;br /&gt;
install( TARGETS kde4project  ${INSTALL_TARGETS_DEFAULT_ARGS} )&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''target_link_libraries'' contém as bibliotecas de desenvolvimento que estão ligadas ao seu programa. Por exemplo, se você quiser ligar a libtidy-devel, o nome do arquivo da sua biblioteca deve ser /usr/local/lib/libtidy.a. Você deve, então, adicionar -ltidy numa chamada do gcc. Aqui, você adicona ''tidy'' ao seu target_link_libraries. Se possível, use variáveis pré-definidas ou macros como ${KDE4_KDEUI_LIBS}.&lt;br /&gt;
&lt;br /&gt;
''install (TARGETS'' é onde o alvo será instalado. Se você não tiver essa linha, make install não funcionará.&lt;br /&gt;
&lt;br /&gt;
Variáveis, macros e outras informações úteis específicas do KDE podem ser encontradas na página [[Development/CMake/Addons for KDE|addons do CMake para o KDE]].&lt;br /&gt;
&lt;br /&gt;
== Estendendo o CMake ==&lt;br /&gt;
O CMake pode ser estendido usando scripts cmake. O CMake vem com uma certa quantidade de scripts; no UNIX, eles são instalados por padrão em /usr/local/share/CMake/Modules/. As bibliotecas do KDE também instalam um conjunto de módulos cmake em share/apps/cmake/modules/. Os arquivos que estão ali serão preferidos em vez dos que estão no path global do sistema de módulos cmake. &lt;br /&gt;
Para detectar pacotes de software que são arquivos FindFOO.cmake, veja [http://www.cmake.org/Wiki/CMake_HowToFindInstalledSoftware aqui] para mais informações.&lt;br /&gt;
Você também pode escrever macros em CMake. Elas são poderosas o suficiente para fazer a maior parte das coisas que você precisará para compilar software, mas elas não são destinadas a serem usadas como uma linguagem de programação de propósito geral.&lt;br /&gt;
&lt;br /&gt;
== Convertendo software do KDE baseado em autotools em CMake ==&lt;br /&gt;
Em kdesdk/cmake/ você pode encontrar um script chamado am2cmake. É um script em ruby, logo, você precisa do ruby instalado. Rode am2cmake no diretório de maior nível dos seus fontes:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd src/mykooltool/&lt;br /&gt;
$ am2cmake --kde4&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Não esqueça de pôr &amp;quot;--kde4&amp;quot;, senão ele não gerará arquivos adequados para software KDE 4. Os arquivos convertidos devem funcionar como estão, mas projetos complexos podem precisar de edição adicionar.&lt;br /&gt;
&lt;br /&gt;
Você pode precisar:&lt;br /&gt;
* adicionar mais diretórios de includes, usando INCLUDE_DIRECTORIES()&lt;br /&gt;
* adicionar mais bibliotecas que serão ligadas, usando TARGET_LINK_LIBRARIES()&lt;br /&gt;
* adicionar algumas definições de compilação, usando ADD_DEFINITIONS()&lt;br /&gt;
* adicionar algumas checagens de configuração (veja [http://www.cmake.org/Wiki/CMake_HowToDoPlatformChecks como fazer checagens de plataforma] e [http://www.cmake.org/Wiki/CMake_HowToFindInstalledSoftware como encontrar software instalado])&lt;br /&gt;
* tomar cuidados especiais bibliotecas de conveniência antigas do libtool. Elas não são suportadas pelo CMake. Em vez delas, haverá um arquivo ConvenienceLibs.cmake criado. Nesse arquivo você encontrará uma variável para cada biblioteca de conveniência, que contém todos os fontes dessa biblioteca de conveniência. Para os alvos que estão ligados a esta biblioteca de conveniência, simplesmente adicione a variável aos fontes.&lt;br /&gt;
* Um arquivo AdditionalInfo.txt será criado. Lá você verá todos os arquivos *.in e *.in.in do seu projeto. As coisas feitas nesses arquivos terão de ser manualmente convertidas para CMake.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming]]&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:FAQs]]&lt;/div&gt;</summary>
		<author><name>R Rios</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Plasma/GettingStarted_(pt_BR)</id>
		<title>Development/Tutorials/Plasma/GettingStarted (pt BR)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Plasma/GettingStarted_(pt_BR)"/>
				<updated>2009-02-27T06:46:00Z</updated>
		
		<summary type="html">&lt;p&gt;R Rios: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials/Plasma/GettingStarted}}&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
&lt;br /&gt;
series=Plasma Tutorial|&lt;br /&gt;
&lt;br /&gt;
name=Criando seu primeiro plasmoid|&lt;br /&gt;
&lt;br /&gt;
pre=[http://mindview.net/Books/TICPP/ThinkingInCPP2e.html C++], [http://www.trolltech.com/products/qt/ Qt], [[Getting_Started/Build/KDE4|KDE4 development environment]]|&lt;br /&gt;
&lt;br /&gt;
next=| &lt;br /&gt;
&lt;br /&gt;
reading=[[Development/Tutorials/CMake|CMake]]&lt;br /&gt;
}}&lt;br /&gt;
==Introdução==&lt;br /&gt;
Este tutorial precisa de, no mínimo, KDE 4.2 para ser compilado.&lt;br /&gt;
Nós vamos criar um plasmoid simples neste tutorial. Para deixar as coisas simples, nós só vamos criar um plasmoid estático contendo os seguintes ítens: &lt;br /&gt;
&lt;br /&gt;
* Uma imagem SVG&lt;br /&gt;
* Um ícone&lt;br /&gt;
* Algum texto legal&lt;br /&gt;
&lt;br /&gt;
[[image:creatingyourfirstplasmoid1.png|frame|center]]&lt;br /&gt;
&lt;br /&gt;
== O código ==&lt;br /&gt;
=== O arquivo .desktop ===&lt;br /&gt;
Todo plasmoid precisa de um arquivo .desktop para dizer ao Plasma como ele deve ser iniciado e qual é o seu nome. &lt;br /&gt;
&lt;br /&gt;
'''plasma-applet-tutorial1.desktop'''&lt;br /&gt;
&amp;lt;code ini&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Name=Tutorial 1&lt;br /&gt;
Comment=Plasma Tutorial 1&lt;br /&gt;
Type=Service&lt;br /&gt;
ServiceTypes=Plasma/Applet&lt;br /&gt;
&lt;br /&gt;
X-KDE-Library=plasma_applet_tutorial1&lt;br /&gt;
X-KDE-PluginInfo-Author=Bas Grolleman&lt;br /&gt;
X-KDE-PluginInfo-Email=bgrolleman@emendo-it.nl&lt;br /&gt;
X-KDE-PluginInfo-Name=plasma_applet_tutorial1&lt;br /&gt;
X-KDE-PluginInfo-Version=0.1&lt;br /&gt;
X-KDE-PluginInfo-Website=http://plasma.kde.org/&lt;br /&gt;
X-KDE-PluginInfo-Category=Examples&lt;br /&gt;
X-KDE-PluginInfo-Depends=&lt;br /&gt;
X-KDE-PluginInfo-License=GPL&lt;br /&gt;
X-KDE-PluginInfo-EnabledByDefault=true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As partes mais importantes são '''X-KDE-Library''' e '''X-KDE-PluginInfo-Name''': eles são a &amp;quot;cola&amp;quot; entre sua classe e o Plasma. Sem eles, nada irá funcionar.  For '''X-KDE-PluginInfo-Category''', refer to the [[Projects/Plasma/PIG | PIG]].&lt;br /&gt;
&lt;br /&gt;
=== O cabeçalho ===&lt;br /&gt;
Este é o cabeçalho de exemplo. Alguns comentários foram adicionados ao código para dar mais clareza.&lt;br /&gt;
&lt;br /&gt;
'''plasma-tutorial1.h'''&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
// Aqui nós evitamos que o cabeçalho seja carregado mais de uma vez&lt;br /&gt;
#ifndef Tutorial1_HEADER&lt;br /&gt;
#define Tutorial1_HEADER&lt;br /&gt;
// Nós precisamos dos cabeçalhos do Applet Plasma&lt;br /&gt;
#include &amp;lt;KIcon&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
#include &amp;lt;Plasma/Applet&amp;gt;&lt;br /&gt;
#include &amp;lt;Plasma/Svg&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
class QSizeF;&lt;br /&gt;
 &lt;br /&gt;
// Definição do nosso applet Plasma&lt;br /&gt;
class PlasmaTutorial1 : public Plasma::Applet&lt;br /&gt;
{&lt;br /&gt;
    Q_OBJECT&lt;br /&gt;
    public:&lt;br /&gt;
        // Criar/Destruir básico&lt;br /&gt;
        PlasmaTutorial1(QObject *parent, const QVariantList &amp;amp;args);&lt;br /&gt;
        ~PlasmaTutorial1();&lt;br /&gt;
 &lt;br /&gt;
        // O procedimento paintInterface desenha o applet na tela&lt;br /&gt;
        void paintInterface(QPainter *painter,&lt;br /&gt;
                const QStyleOptionGraphicsItem *option,&lt;br /&gt;
                const QRect&amp;amp; contentsRect);&lt;br /&gt;
	void init();&lt;br /&gt;
&lt;br /&gt;
    private:&lt;br /&gt;
        Plasma::Svg m_svg;&lt;br /&gt;
        KIcon m_icon;&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
// Este é o comando que liga seu applet ao arquivo .desktop&lt;br /&gt;
K_EXPORT_PLASMA_APPLET(tutorial1, PlasmaTutorial1)&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== QRectF boundingRect() ====&lt;br /&gt;
A função &amp;lt;tt&amp;gt;boundingRect()&amp;lt;/tt&amp;gt; diz ao Plasma o tamanho real do plasmoid. Isto é importante porque nós precisamos saber quanto espaço é tomado na tela. &lt;br /&gt;
{{tip|&lt;br /&gt;
Se você tem problemas com seu plasmoid deixando um rastro de pixels enquanto é arrastado, isso é, geralmente, causado por um boundingRect() incorreto.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== void paintInterface(QRectF contentsRect) ====&lt;br /&gt;
Esta pode ser considerada a função principal, já que desenha o plasmoid na tela. Aqui você define como você quer que seu plasmoid fique.&lt;br /&gt;
Você só deve desenhar nos limites definidos por contentsRect e evitar usar  geometry(). Quando um plasmoid não tem um fundo padrão - quando, por exemplo, está desativado com uma chamada de setBackgroundHints() ou está no painel - geometry() e boundingRect() se comportam igualmente; no entanto, quando o fundo padrão está ativado (o caso usual), o applet vai ter uma margem onde não ele deveria ser desenhado.&lt;br /&gt;
&lt;br /&gt;
==== K_EXPORT_PLASMA_APPLET ( &amp;lt;name&amp;gt;, &amp;lt;class&amp;gt; ) ====&lt;br /&gt;
Esta é uma parte pequena, mas muito importante que liga o nome da classe ao nome do applet no arquivo .desktop. Se parecer que seu applet não foi carregado, deve haver uma diferença entre esta declaração e seu arquivo .desktop.&lt;br /&gt;
&lt;br /&gt;
{{tip|&lt;br /&gt;
K_EXPORT_PLASMA_APPLET adiciona &amp;quot;plasma_applet_&amp;quot;. Por favor, preste atenção a isto quando estiver configurando seu arquivo .desktop para evitar uma diferença de nome.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== O arquivo de trabalho de verdade ===&lt;br /&gt;
Aqui está o corpo da função, novamente com vários comentários. &lt;br /&gt;
&lt;br /&gt;
'''plasma-tutorial1.cpp'''&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
#include &amp;quot;plasma-tutorial1.h&amp;quot;&lt;br /&gt;
#include &amp;lt;QPainter&amp;gt;&lt;br /&gt;
#include &amp;lt;QFontMetrics&amp;gt;&lt;br /&gt;
#include &amp;lt;QSizeF&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
#include &amp;lt;plasma/svg.h&amp;gt;&lt;br /&gt;
#include &amp;lt;plasma/theme.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
PlasmaTutorial1::PlasmaTutorial1(QObject *parent, const QVariantList &amp;amp;args)&lt;br /&gt;
    : Plasma::Applet(parent, args),&lt;br /&gt;
    m_svg(this),&lt;br /&gt;
    m_icon(&amp;quot;document&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
    m_svg.setImagePath(&amp;quot;widgets/background&amp;quot;);&lt;br /&gt;
    // Isto vai nos dar o fundo padrão de applets, de graça!&lt;br /&gt;
    setBackgroundHints(DefaultBackground);&lt;br /&gt;
    resize(200, 200);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
PlasmaTutorial1::~PlasmaTutorial1()&lt;br /&gt;
{&lt;br /&gt;
    if (hasFailedToLaunch()) {&lt;br /&gt;
        // Pôr alguma limpeza aqui&lt;br /&gt;
    } else {&lt;br /&gt;
        // Salvar configurações&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void PlasmaTutorial1::init()&lt;br /&gt;
{&lt;br /&gt;
 &lt;br /&gt;
    // Uma pequena demonstração da função setFailedToLaunch&lt;br /&gt;
    if (m_icon.isNull()) {&lt;br /&gt;
        setFailedToLaunch(true, &amp;quot;Nenhum mundo para dizer olá&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
void PlasmaTutorial1::paintInterface(QPainter *p,&lt;br /&gt;
        const QStyleOptionGraphicsItem *option, const QRect &amp;amp;contentsRect)&lt;br /&gt;
{&lt;br /&gt;
    p-&amp;gt;setRenderHint(QPainter::SmoothPixmapTransform);&lt;br /&gt;
    p-&amp;gt;setRenderHint(QPainter::Antialiasing);&lt;br /&gt;
 &lt;br /&gt;
    // Agora nós desenhamos o applet, começando pelo svg&lt;br /&gt;
    m_svg.resize((int)contentsRect.width(), (int)contentsRect.height());&lt;br /&gt;
    m_svg.paint(p, (int)contentsRect.left(), (int)contentsRect.top());&lt;br /&gt;
 &lt;br /&gt;
    // Colocamos ícone e texto&lt;br /&gt;
    p-&amp;gt;drawPixmap(7, 0, m_icon.pixmap((int)contentsRect.width(),(int)contentsRect.width()-14));&lt;br /&gt;
    p-&amp;gt;save();&lt;br /&gt;
    p-&amp;gt;setPen(Qt::white);&lt;br /&gt;
    p-&amp;gt;drawText(contentsRect,&lt;br /&gt;
                Qt::AlignBottom | Qt::AlignHCenter,&lt;br /&gt;
                &amp;quot;Olá, plasmoid!&amp;quot;);&lt;br /&gt;
    p-&amp;gt;restore();&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
#include &amp;quot;plasma-tutorial1.moc&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Plasma/Svg ====&lt;br /&gt;
Como você pode ver no código de exemplo, estamos usando o objeto {{class|Plasma::Svg}}. Há algumas coisas importantes para notar aqui.&lt;br /&gt;
&lt;br /&gt;
Em primeiro lugar, estamos usando um path relativo ('''widgets/background'''), que faz com que {{class|Plasma::Svg}} use {{class|Plasma::Theme}} para localizar os dados SVG. Enquanto {{class|Plasma::Svg}} suporta carregar arquivos arbitrários quando é passado um path absoluto, ela usa paths relativos do tema sempre que possível e sempre que se aplica temas ao Plasma. Assim, plasmoids individuais parecem mais um grupo do que um conjunto de aplicações separadas. Você pode ver uma lista de imagens disponíveis na [[Projects/Plasma/Theme|página de temas do Plasma]].&lt;br /&gt;
&lt;br /&gt;
Em ambos os modos, {{class|Plasma::Svg}} pode ser usada para desenhar um subconjunto do arquivo SVG passando para ele um id de um elemento que aparece no documento SVG. Um bom exemplo: se você abrir o arquivo clock.svg que vem com o tema padrão, você verá que ele tem um fundo, 3 ponteiros (hora, minuto e segundos) e uma frente (o vidro). Graças à habilidade de pôr todos os elementos num arquivo, o arquivo SVG mostra um relógio. Isso é bem melhor para artistas do que editar 5 arquivos separados - que eles tem que imaginar que estão um encima do outro -, e muito melhor para a performace, já que apenas uma renderização SVG e uma leitura de arquivo bastam.&lt;br /&gt;
&lt;br /&gt;
==== setBackgroundHints(DefaultBackground) ====&lt;br /&gt;
Como desenhar o fundo é uma função comum, há uma maneira rápida e fácil de fazê-lo. Adicionando &amp;lt;tt&amp;gt;setBackgroundHints(DefaultBackground)&amp;lt;/tt&amp;gt; ao código, o fundo padrão do Plasma é desenhado ao fundo do seu plasmoid. Isso não só economiza tempo e código, como também cria uma apresentação mais consistente ao usuário.&lt;br /&gt;
&lt;br /&gt;
==== O método init() ====&lt;br /&gt;
No construtor você apenas diz ao Plasma o fundo e o arquivo de configuração, se houver. Você também configura o tamanho inicial no construtor. Depois disso, o Plasma vai cuidar de qualquer redimensionamento, e você não vai mais precisar se preocupar sobre o tamanho. No método &amp;lt;tt&amp;gt;init()&amp;lt;/tt&amp;gt; você inicializa tudo que for necessário, como ler os dados de configuração, por exemplo.&lt;br /&gt;
&lt;br /&gt;
==== hasFailedToLaunch() ====&lt;br /&gt;
Se, por alguma razão, a inicialização do applet falhar (as bibliotecas não puderam ser carregadas, não foi encontrado o hardware necessário, etc.), esse método retorna verdadeiro. O uso dessa função dá uma chance de fazer a limpeza necessária ao seu aplicativo. &lt;br /&gt;
&lt;br /&gt;
==== setFailedToLaunch(bool, QString) ====&lt;br /&gt;
Quando não é possível iniciar sua aplicação, essa função permite que você informe ao Plasma e dê um porquê opcional. Plasma vai então desenhar uma interface de erro padronizada para informar ao usuário sobre a situação e seu applet não será chamado para desenhar nada dali para frente. Se seu plasmoid ficar mais complexo e depender de múltiplos fatores, essa é a melhor maneira para fazer uma limpeza.&lt;br /&gt;
&lt;br /&gt;
==== dataUpdated ====&lt;br /&gt;
Se você se conectasse a qualquer um dos data-engines do Plasma você teria que implementar uma função chamada dataUpdated no seu plasmoid. Ela é chamada se o data-engine lhe mandar dados - por exemplo: se seu plasmoid tivesse que recalcular o conteúdo.&lt;br /&gt;
&lt;br /&gt;
==== Determinar o tamanho e a geometria do applet: geometry() e contentsRect() ====&lt;br /&gt;
Se você precisar saber, no código do seu applet, qual seus tamanho e geometria, chame contentsRect() e contentsRect().size(). Evite chamar geometry() e size(), pois eles não levam em conta o tamanho da margem, configurado pelo fundo padrão do applet.&lt;br /&gt;
Além disso, evite usar números absolutos ao posicionar ítens no applet, como QPoint(0, 0) para indicar o ponto superior esquedo do applet. Em vez disso, use contentsRect().topLeft().&lt;br /&gt;
&lt;br /&gt;
=== Compilando tudo. CMakeLists.txt ===&lt;br /&gt;
Finalmente, para pôr tudo junto é necessário compilar. Para dizer ao CMake o que precisa ir onde, aqui está o CMakeLists.txt. &lt;br /&gt;
&lt;br /&gt;
Para mais detalhes sobre o CMake, por favor leia [[Development/Tutorials/CMake_(pt_BR)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
# O projeto precisa de um nome, obviamente&lt;br /&gt;
project(plasma-tutorial1)&lt;br /&gt;
&lt;br /&gt;
# Encontrar as bibliotecas necessárias&lt;br /&gt;
find_package(KDE4 REQUIRED)&lt;br /&gt;
include(KDE4Defaults)&lt;br /&gt;
&lt;br /&gt;
add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS})&lt;br /&gt;
include_directories(&lt;br /&gt;
   ${CMAKE_SOURCE_DIR}&lt;br /&gt;
   ${CMAKE_BINARY_DIR}&lt;br /&gt;
   ${KDE4_INCLUDES}&lt;br /&gt;
   )&lt;br /&gt;
&lt;br /&gt;
# Adicionamos nosso código fonte aqui&lt;br /&gt;
set(tutorial1_SRCS plasma-tutorial1.cpp)&lt;br /&gt;
&lt;br /&gt;
# Agora tenha certeza de que todos os arquivos estão no lugar certo&lt;br /&gt;
kde4_add_plugin(plasma_applet_tutorial1 ${tutorial1_SRCS})&lt;br /&gt;
target_link_libraries(plasma_applet_tutorial1 &lt;br /&gt;
                      ${KDE4_PLASMA_LIBS} ${KDE4_KDEUI_LIBS})&lt;br /&gt;
&lt;br /&gt;
install(TARGETS plasma_applet_tutorial1&lt;br /&gt;
        DESTINATION ${PLUGIN_INSTALL_DIR})&lt;br /&gt;
&lt;br /&gt;
install(FILES plasma-applet-tutorial1.desktop&lt;br /&gt;
        DESTINATION ${SERVICES_INSTALL_DIR})&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testando o Applet ==&lt;br /&gt;
Se seu ambiente de desenvolvimento atual difere da instalação teste, você tem que rodar o CMake com -DCMAKE_INSTALL_PREFIX=$KDEDIR (sendo $KDEDIR o diretório onde o KDE se encontra). Então rode make. Se a compilação ocorreu com sucesso, o programa pode ser instalado com make install (como root).&lt;br /&gt;
ou&lt;br /&gt;
* cp ./lib/plasma_applet_tutorial1.so $KDEDIR/lib &lt;br /&gt;
* cp ./plasma-applet-tutorial1.desktop $KDEDIR/share/kde4/services/&lt;br /&gt;
&lt;br /&gt;
e rode kbuildsycoca4 (para que os programas KDE saibam dos novos arquivos desktop).&lt;br /&gt;
Para testar seu applet, você pode usar o programa '''plasmoidviewer''':&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
plasmoidviewer applet_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Você pode, também, ver seu applet numa área de trabalho pequena usando o plasmoidviewer:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
plasmoidviewer -c desktop applet_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sendo '''applet_name''' o calor especificado dentro do .desktop para a chave '''X-KDE-PluginInfo-Name'''.&lt;br /&gt;
&lt;br /&gt;
Ou então você pode reiniciar o Plasma, para que o applet seja mostrado no navegador de applets: &lt;br /&gt;
 kbuildsycoca4&lt;br /&gt;
 kquitapp plasma # no trunk (KDE4.3): kquitapp plasma-desktop&lt;br /&gt;
 plasma          # no trunk (KDE4.3): plasma-desktop&lt;br /&gt;
&lt;br /&gt;
Se isso não funcionar você terá que reiniciar sua sessão KDE fazendo logout e, então, login.&lt;/div&gt;</summary>
		<author><name>R Rios</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/CMake_(pt_BR)</id>
		<title>Development/Tutorials/CMake (pt BR)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/CMake_(pt_BR)"/>
				<updated>2009-02-27T06:43:26Z</updated>
		
		<summary type="html">&lt;p&gt;R Rios: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials/CMake}}&lt;br /&gt;
&lt;br /&gt;
== Introdução ==&lt;br /&gt;
O [http://www.cmake.org CMake] lê arquivos de script e produz arquivos de entrada para o sistema de compilação nativo da plataforma que ele roda. Ele pode criar GNU Makefiles, arquivos de projeto do KDevelop, arquivos de projeto do XCode e arquivos de projeto do Visual Studio.&lt;br /&gt;
&lt;br /&gt;
O [http://www.cmake.org CMake] é software livre e liberado sob a licença BSD.  É desenvolvido pela [http://www.kitware.com Kitware Inc.]&lt;br /&gt;
&lt;br /&gt;
Você pode encontrar mais informação relacionada ao CMake na [[Development/CMake | página principal do CMake]] aqui no TechBase.&lt;br /&gt;
&lt;br /&gt;
== Por que usar CMake? ==&lt;br /&gt;
CMake é a ferramenta oficial do KDE 4, decidida em Março de 2006, primeiramente graças aos seus méritos técnicos quando comparada com automake e unsermake, as antigas ferramentas do KDE:&lt;br /&gt;
* CMake é desenvolvido independentemente do KDE, e pode ser usado por outros projetos, portanto.&lt;br /&gt;
* O tempo de compilação é muito menor, principalmente por não usar mais o libtool&lt;br /&gt;
* É mais fácil escrever arquivos de compilação&lt;br /&gt;
&lt;br /&gt;
== Como compilar o KDE usando CMake==&lt;br /&gt;
&lt;br /&gt;
=== Baixe e instale o CMake ===&lt;br /&gt;
==== Linux, BSD e outros sistemas Unix-like ====&lt;br /&gt;
Baixe a última versão estável do CMake em [http://www.cmake.org/HTML/Download.html].&lt;br /&gt;
&lt;br /&gt;
Depois de baixar, descompacte e compile:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir cmake-build&lt;br /&gt;
$ cd cmake-build&lt;br /&gt;
$ ../bootstrap&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por padrão, isso instalará o CMake em /usr/local, então tenha certeza de pôr /usr/local/bin no seu path de execução. Para mudar o prefixo de instalação (para /usr no Debian, por exemplo), adicione a opção '--prefix=PATH' à linha de comando.&lt;br /&gt;
&lt;br /&gt;
Siga as instruções que se encontram [http://cmake.org/HTML/Download.html#cvs aqui] se quiser usar a versão de desenvolvimento.&lt;br /&gt;
&lt;br /&gt;
==== Windows ====&lt;br /&gt;
Baixe a última versão estável do CMake em [http://www.cmake.org/HTML/Download.html].&lt;br /&gt;
&lt;br /&gt;
Depois de baixar, execute o instalador do CMake.&lt;br /&gt;
&lt;br /&gt;
Por padrão, ele instalará o CMake em C:\Program Files\CMake 2.4, então tenha  certeza de ter &amp;lt;installpath&amp;gt;\bin no seu path de execução.   &lt;br /&gt;
&lt;br /&gt;
Siga as instruções que se encontram [http://cmake.org/HTML/Download.html#cvs aqui] se quiser usar a versão de desenvolvimento.&lt;br /&gt;
&lt;br /&gt;
=== Executar o CMake ===&lt;br /&gt;
&lt;br /&gt;
==== Linux, BSD e outros sistemas Unix-like ====&lt;br /&gt;
Você tem que rodar o CMake para que ele gere os arquivos para seu sistema. Tanto compilações dentro dos códigos fontes (in-source builds) quando fora deles (out-of-source builds) são suportadas pelo CMake, mas in-source builds são prevenidos pela implementação atual do KDE.&lt;br /&gt;
&lt;br /&gt;
Supondo que você tenha o diretório kdelibs/ em ~/src/kdelibs/, faça o seguinte:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ ls&lt;br /&gt;
kdelibs/&lt;br /&gt;
$ mkdir kdelibs-build&lt;br /&gt;
$ cd kdelibs-build&lt;br /&gt;
$ cmake ../kdelibs&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Isso gerará os Makefiles para compilar kdelibs/ em kdelibs-build/.&lt;br /&gt;
&lt;br /&gt;
==== Windows ====&lt;br /&gt;
Você tem que rodar o CMake para que ele gere os arquivos para seu sistema. Tanto compilações dentro dos códigos fontes (in-source builds) quando fora deles (out-of-source builds) são suportadas pelo CMake, mas in-source builds são prevenidos pela implementação atual do KDE.&lt;br /&gt;
&lt;br /&gt;
Supondo que você tenha o diretório kdelibs\ em c:\daten\kde4, faça o seguinte:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
c:\daten\kde4&amp;gt; cd kdelibs\win&lt;br /&gt;
c:\daten\kde4&amp;gt; cmake&lt;br /&gt;
c:\daten\kde4&amp;gt; make &lt;br /&gt;
c:\daten\kde4&amp;gt; make install&lt;br /&gt;
c:\daten\kde4&amp;gt; cd ..&lt;br /&gt;
c:\daten\kde4&amp;gt; mkdir kdelibs-build&lt;br /&gt;
c:\daten\kde4&amp;gt; cd kdelibs-build&lt;br /&gt;
c:\daten\kde4\kdelibs-build&amp;gt; cmake ..\kdelibs&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Isso gerará os Makefiles para compilar kdelibs\ em kdelibs-build\. Veja [[Projects/KDE_on_Windows|KDE no Windows]] para mais informações sobre como compilar o KDE no Windows.&lt;br /&gt;
&lt;br /&gt;
==== Arquivos de projeto do KDevelop 3 ====&lt;br /&gt;
Se você prefere arquivos de projeto para o KDevelop 3 (que serão basicamente Makefiles acompanhados de alguns arquivos extra para o KDevelop), rode-o desta forma:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cmake ../kdelibs -GKDevelop3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Use 'cmake -h' para descobrir que geradores o CMake suporta e outras opções.&lt;br /&gt;
&lt;br /&gt;
==== CMake e Qt4 ====&lt;br /&gt;
Para localizar o Qt 4, o CMake procura por qmake no seu path de execução. CMake ''não'' usa a variável de ambiente QTDIR. Então esteja certo que o primeiro qmake encontrado no path de execução é o que você deve usar.&lt;br /&gt;
&lt;br /&gt;
==== Mais detalhes ====&lt;br /&gt;
Quando CMake finalizar, ele terá criado um arquivo chamado &amp;quot;CMakeCache.txt&amp;quot;.  Esse arquivo contem todas as configurações que o CMake detectou em seu sistema. Se você quiser executar o CMake com outro gerador ou se você quer que o CMake detecte tudo novamente, exclua esse arquivo.&lt;br /&gt;
&lt;br /&gt;
Se o CMake não encontrar alguma coisa, mas você sabe que está em algum lugar, você pode dizer manualmente ao CMake onde encontrá-la. O CMake usa variáveis para guardar essas informações. Essas variáveis são armazenadas no já mencionado arquivo CMakeCache.txt. Você tem três opções para ajustá-las manualmente:&lt;br /&gt;
* informe ao CMake o valor correto pela linha de comando: cmake ../kdelibs -DNOME_DA_VARIAVEL=valor&lt;br /&gt;
* use ccmake, que provê uma GUI baseada em curses para ajustar as variáveis do CMake (rode: ccmake ../kdelibs)&lt;br /&gt;
* modifique CMakeCache.txt diretamente (não recomendado)&lt;br /&gt;
&lt;br /&gt;
Você deve rodar &amp;quot;ccmake ../kdelibs&amp;quot; ao menos uma vez para que você tenha uma ideia de que variáveis o CMake usa. Pressione &amp;quot;T&amp;quot; para ver também as variáveis &amp;quot;avançadas&amp;quot;. Então, se o CMake não encontrar alguma coisa, inicie ccmake e ajuste-o manualmente.&lt;br /&gt;
&lt;br /&gt;
==== Variáveis de linha de comando ====&lt;br /&gt;
&lt;br /&gt;
Algumas variáveis de linha de comando do CMake que você deve querer configurar:&lt;br /&gt;
* '''CMAKE_INSTALL_PREFIX''': cmake ../kdelibs -DCMAKE_INSTALL_PREFIX=/opt/kde4 é equivalente a ./configure --prefix=/opt/kde4&lt;br /&gt;
* '''[[Development/CMake/Build_Types|CMAKE_BUILD_TYPE]]''': decide que tipo de compilação você quer. Você pode escolher entre &amp;quot;debugfull&amp;quot;, &amp;quot;debug&amp;quot;, &amp;quot;profile&amp;quot;, &amp;quot;relwithdebinfo&amp;quot; e &amp;quot;release&amp;quot;. O padrão é &amp;quot;relwithdebinfo&amp;quot;. Vá à página [[Development/CMake/Build_Types|Tipos de compilação do CMake]] para uma explicação mais detalhada.&lt;br /&gt;
* '''KDE4_BUILD_TESTS=ON''': cria Makefiles com programas de teste de compilação e provê alvos 'test'.&lt;br /&gt;
* '''KDE4_TEST_OUTPUT=xml''': Testes unitários usando o framework QTestLib criará arquivos de log formatados em xml.&lt;br /&gt;
* '''KDE4_DISABLE_MULTIMEDIA=ON''': Compila o KDE sem nenhum suporte a multimídia (áudio e vídeo).&lt;br /&gt;
* '''BUILD_foo=OFF''': desativa a compilação para o prjeto no subdiretório 'foo'.&lt;br /&gt;
* '''WITH_foo''': há várias opções - por exemplo, WITH_CUPS ou WITH_Jasper. Se você desativá-las, o CMake não irá nem mesmo tentar procurar por esse pacote. Se estiver ativado, o CMake tentará encontrá-lo. Se falhar com isso, você pode ajustar manualmente, como descrito acima.&lt;br /&gt;
&lt;br /&gt;
=== Variáveis de ambiente ===&lt;br /&gt;
Se você tem cabeçalhos e bibliotecas instalados em localizações fora do padrão que o CMake não pode encontrar, então configure as seguintes variáveis de ambiente. Isso pode ser bastante útil se, por exemplo você instalar kdesupport em ~/install/kdesupport .&lt;br /&gt;
Apesar da nomeação similar, essas variáveis não funcionam se passadas por linha de comando:&lt;br /&gt;
* '''CMAKE_INCLUDE_PATH''', por exemplo, export CMAKE_INCLUDE_PATH=/sw/include&lt;br /&gt;
* '''CMAKE_LIBRARY_PATH''', por exemplo, export CMAKE_LIBRARY_PATH=/sw/lib&lt;br /&gt;
* '''CMAKE_PROGRAM_PATH''', por exemplo, export CMAKE_PROGRAM_PATH=/sw/bin&lt;br /&gt;
&lt;br /&gt;
A partir do CMake 2.6.0, o mesmo efeito das variáveis acima pode ser atingido com apenas um comando:&lt;br /&gt;
* '''CMAKE_PREFIX_PATH''', por exemplo, export CMAKE_PREFIX_PATH=/sw&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para mais informações sobre variáveis, veja [http://www.cmake.org/Wiki/CMake_Useful_Variables esta página do wiki cmake.org]&lt;br /&gt;
&lt;br /&gt;
=== Indo além ===&lt;br /&gt;
Se o CMake finalizar com &amp;quot;Generating done&amp;quot;, não houve erros. Mas, se finalizar com &amp;quot;Configuring done&amp;quot;, então há erros para você consertar.  Se o CMake finalizar com sucesso, rode sua ferramenta de compilação (por exemplo: make, KDevelop, XCode ou MSVC), compile e espere que a compilação termine. Então rode &amp;quot;make install&amp;quot; como root.&lt;br /&gt;
&lt;br /&gt;
Se houve uma falha que diz algo como:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
CMake Error: This project requires some variables to be set,&lt;br /&gt;
and cmake can not find them.&lt;br /&gt;
Please set the following variables:&lt;br /&gt;
X11_XTest_LIB (ADVANCED)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
então está faltando uma biblioteca (ou outra dependência). Para descobrir qual biblioteca é, procure no diretório pela variável que o CMake não pôde encontrar no diretório cmake/modules. No exemplo acima, ela é&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
find_library(X11_XTest_LIB Xtst ${X11_LIB_SEARCH_PATH})&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Logo, a biblioteca que está faltando é Xtst. Então você deve encontrá-la (provavelmente instalando libXtst-devel) e rodar cmake novamente.&lt;br /&gt;
&lt;br /&gt;
== Usando o CMake para uma aplicação simples ==&lt;br /&gt;
&lt;br /&gt;
Aqui está o CMakeLists.txt mais simples possível:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
add_executable(hello main.cpp)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Isso criará um executável chamado &amp;quot;hello&amp;quot; (ou &amp;quot;hello.exe&amp;quot; no Windows) do arquivo de código fonte main.cpp. Você pode misturar arquivos C e C++ se você quiser. Você pode ter múltiplos executáveis e bibliotecas num CMakeLists.txt.  O mesmo arquivo de código fonte pode ser usado em vários alvos: ele será compilado para cada um, independentemente dos outros. Provavelmente, a parte mais importante da linguagem CMake são as variáveis:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
set( MY_SOURCES main.cpp widget.cpp)&lt;br /&gt;
message(STATUS &amp;quot;my sources: ${MY_SOURCES}&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Então, use o comando SET() para definir o valor de uma variável. Se você listar mais de uma string, a variável será uma lista. Uma lista é uma lista de strings separada por pontos-e-vírgulas. Se você definí-la para apenas um item, ela terá apenas um valor. Para pegar o valor da variável, use ${VAR}.&lt;br /&gt;
Você pode realizar iterações na lista usando FOREACH():&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
foreach(next_ITEM ${MY_SOURCES})&lt;br /&gt;
   message(STATUS &amp;quot;next item: ${next_ITEM}&amp;quot;)&lt;br /&gt;
endforeach(next_ITEM ${MY_SOURCES})&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Os comandos do CMake são sensíveis à caixa, assim como nomes de variáveis de de parâmetros.&lt;br /&gt;
&lt;br /&gt;
Você também pode testar várias coisas:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
if (UNIX)&lt;br /&gt;
   message(STATUS &amp;quot;Isto é UNIX (incluindo OS X e CygWin)&amp;quot;)&lt;br /&gt;
endif (UNIX)&lt;br /&gt;
&lt;br /&gt;
if (MSVC)&lt;br /&gt;
   set(MY_SRCS ${MY_SRCS} winextra.cpp)&lt;br /&gt;
endif (MSVC)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Neste segundo exemplo você pode ver também como anexar ítens a uma lista.&lt;br /&gt;
&lt;br /&gt;
Na Wiki do CMake também há um [http://www.cmake.org/Wiki/HowToBuildKDE4Software  tutorial] (em inglês) sobre como usar o CMake para compilar software para o KDE 4. É uma leitura recomendada.&lt;br /&gt;
&lt;br /&gt;
== Usando o CMake para um projeto KDE ==&lt;br /&gt;
&lt;br /&gt;
A seguir, uma CMakeList básica que compila um projeto KDE 4 pequeno:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
project( kde4project )&lt;br /&gt;
find_package( KDE4 REQUIRED )&lt;br /&gt;
include_directories( ${KDE4_INCLUDES} )&lt;br /&gt;
&lt;br /&gt;
set( KDE4ProjectSources kde4mainapp.cpp someclass.cpp someotherclass.cpp )&lt;br /&gt;
&lt;br /&gt;
kde4_add_executable( kde4project ${KDE4ProjectSources} )&lt;br /&gt;
&lt;br /&gt;
target_link_libraries( kde4project ${KDE4_KDEUI_LIBS} ${KDE4_KPARTS_LIBS} )&lt;br /&gt;
&lt;br /&gt;
install( TARGETS kde4project  ${INSTALL_TARGETS_DEFAULT_ARGS} )&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''target_link_libraries'' contém as bibliotecas de desenvolvimento que estão ligadas ao seu programa. Por exemplo, se você quiser ligar a libtidy-devel, o nome do arquivo da sua biblioteca deve ser /usr/local/lib/libtidy.a. Você deve, então, adicionar -ltidy numa chamada do gcc. Aqui, você adicona ''tidy'' ao seu target_link_libraries. Se possível, use variáveis pré-definidas ou macros como ${KDE4_KDEUI_LIBS}.&lt;br /&gt;
&lt;br /&gt;
''install (TARGETS'' é onde o alvo será instalado. Se você não tiver essa linha, make install não funcionará.&lt;br /&gt;
&lt;br /&gt;
Variáveis, macros e outras informações úteis específicas do KDE podem ser encontradas na página [[Development/CMake/Addons for KDE|addons do CMake para o KDE]].&lt;br /&gt;
&lt;br /&gt;
== Estendendo o CMake ==&lt;br /&gt;
O CMake pode ser estendido usando scripts cmake. O CMake vem com uma certa quantidade de scripts; no UNIX, eles são instalados por padrão em /usr/local/share/CMake/Modules/. As bibliotecas do KDE também instalam um conjunto de módulos cmake em share/apps/cmake/modules/. Os arquivos que estão ali serão preferidos em vez dos que estão no path global do sistema de módulos cmake. &lt;br /&gt;
For detecting software packages there are FindFOO.cmake files, see [http://www.cmake.org/Wiki/CMake_HowToFindInstalledSoftware here] for more information.&lt;br /&gt;
You can also write macros in CMake. They are powerful enough to do most things you will need to build software, but they are not intended to be used as a general purpose programming language.&lt;br /&gt;
&lt;br /&gt;
== Converting autotools-based KDE software to CMake ==&lt;br /&gt;
In kdesdk/cmake/ you can find a script am2cmake . This is a ruby script, so you need to have ruby installed. Run am2cmake in the toplevel directory of your sources:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd src/mykooltool/&lt;br /&gt;
$ am2cmake --kde4&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Don't forget the switch &amp;quot;--kde4&amp;quot;, otherwise it won't generate files suitable for KDE 4 software. The converted files 'may' work as they are, but complicated projects will require some additional editing.&lt;br /&gt;
&lt;br /&gt;
You may have to:&lt;br /&gt;
* add more include direcories, using INCLUDE_DIRECTORIES()&lt;br /&gt;
* add more link libraries, using TARGET_LINK_LIBRARIES()&lt;br /&gt;
* add some compile switches, using ADD_DEFINITIONS()&lt;br /&gt;
* add some &amp;quot;configure&amp;quot; checks, see [http://www.cmake.org/Wiki/CMake_HowToDoPlatformChecks How To Do Platform Checks] and [http://www.cmake.org/Wiki/CMake_HowToFindInstalledSoftware How To Find Installed Software]&lt;br /&gt;
* take special care of former libtool convenience libraries. They are not supported by cmake, instead there will be a file ConvenienceLibs.cmake created.  In this file you will find for every convenience lib a variable, which contains all source files of this convenience lib.  For the targets which linked to this convenience lib, just add the variable to the sources.&lt;br /&gt;
* a file AdditionalInfo.txt will be created.  There you will see all *.in and *.in.in files of your project. The stuff done in these files will have to be converted manually to cmake.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming]]&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:FAQs]]&lt;/div&gt;</summary>
		<author><name>R Rios</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Talk:Development/Tutorials/CMake_(pt_BR)</id>
		<title>Talk:Development/Tutorials/CMake (pt BR)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Talk:Development/Tutorials/CMake_(pt_BR)"/>
				<updated>2009-02-27T06:23:03Z</updated>
		
		<summary type="html">&lt;p&gt;R Rios: New page: Continuo a traduzir depois, estou morrendo de sono...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Continuo a traduzir depois, estou morrendo de sono...&lt;/div&gt;</summary>
		<author><name>R Rios</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/CMake_(pt_BR)</id>
		<title>Development/Tutorials/CMake (pt BR)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/CMake_(pt_BR)"/>
				<updated>2009-02-27T06:22:07Z</updated>
		
		<summary type="html">&lt;p&gt;R Rios: New page: {{Template:I18n/Language Navigation Bar|Development/Tutorials/CMake}}  == Introdução == O [http://www.cmake.org CMake] lê arquivos de script e produz arquivos de entrada para o sistema ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials/CMake}}&lt;br /&gt;
&lt;br /&gt;
== Introdução ==&lt;br /&gt;
O [http://www.cmake.org CMake] lê arquivos de script e produz arquivos de entrada para o sistema de compilação nativo da plataforma que ele roda. Ele pode criar GNU Makefiles, arquivos de projeto do KDevelop, arquivos de projeto do XCode e arquivos de projeto do Visual Studio.&lt;br /&gt;
&lt;br /&gt;
O [http://www.cmake.org CMake] é software livre e liberado sob a licença BSD.  É desenvolvido pela [http://www.kitware.com Kitware Inc.]&lt;br /&gt;
&lt;br /&gt;
Você pode encontrar mais informação relacionada ao CMake na [[Development/CMake | página principal do CMake]] aqui no TechBase.&lt;br /&gt;
&lt;br /&gt;
== Por que usar CMake? ==&lt;br /&gt;
CMake é a ferramenta oficial do KDE 4, decidida em Março de 2006, primeiramente graças aos seus méritos técnicos quando comparada com automake e unsermake, as antigas ferramentas do KDE:&lt;br /&gt;
* CMake é desenvolvido independentemente do KDE, e pode ser usado por outros projetos, portanto.&lt;br /&gt;
* O tempo de compilação é muito menor, principalmente por não usar mais o libtool&lt;br /&gt;
* É mais fácil escrever arquivos de compilação&lt;br /&gt;
&lt;br /&gt;
== Como compilar o KDE usando CMake==&lt;br /&gt;
&lt;br /&gt;
=== Baixe e instale o CMake ===&lt;br /&gt;
==== Linux, BSD e outros sistemas Unix-like ====&lt;br /&gt;
Baixe a última versão estável do CMake em [http://www.cmake.org/HTML/Download.html].&lt;br /&gt;
&lt;br /&gt;
Depois de baixar, descompacte e compile:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ mkdir cmake-build&lt;br /&gt;
$ cd cmake-build&lt;br /&gt;
$ ../bootstrap&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por padrão, isso instalará o CMake em /usr/local, então tenha certeza de pôr /usr/local/bin no seu path de execução. Para mudar o prefixo de instalação (para /usr no Debian, por exemplo), adicione a opção '--prefix=PATH' à linha de comando.&lt;br /&gt;
&lt;br /&gt;
Siga as instruções que se encontram [http://cmake.org/HTML/Download.html#cvs aqui] se quiser usar a versão de desenvolvimento.&lt;br /&gt;
&lt;br /&gt;
==== Windows ====&lt;br /&gt;
Baixe a última versão estável do CMake em [http://www.cmake.org/HTML/Download.html].&lt;br /&gt;
&lt;br /&gt;
Depois de baixar, execute o instalador do CMake.&lt;br /&gt;
&lt;br /&gt;
Por padrão, ele instalará o CMake em C:\Program Files\CMake 2.4, então tenha  certeza de ter &amp;lt;installpath&amp;gt;\bin no seu path de execução.   &lt;br /&gt;
&lt;br /&gt;
Siga as instruções que se encontram [http://cmake.org/HTML/Download.html#cvs aqui] se quiser usar a versão de desenvolvimento.&lt;br /&gt;
&lt;br /&gt;
=== Executar o CMake ===&lt;br /&gt;
&lt;br /&gt;
==== Linux, BSD e outros sistemas Unix-like ====&lt;br /&gt;
Você tem que rodar o CMake para que ele gere os arquivos para seu sistema. Tanto compilações dentro dos códigos fontes (in-source builds) quando fora deles (out-of-source builds) são suportadas pelo CMake, mas in-source builds são prevenidos pela implementação atual do KDE.&lt;br /&gt;
&lt;br /&gt;
Supondo que você tenha o diretório kdelibs/ em ~/src/kdelibs/, faça o seguinte:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ ls&lt;br /&gt;
kdelibs/&lt;br /&gt;
$ mkdir kdelibs-build&lt;br /&gt;
$ cd kdelibs-build&lt;br /&gt;
$ cmake ../kdelibs&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Isso gerará os Makefiles para compilar kdelibs/ em kdelibs-build/.&lt;br /&gt;
&lt;br /&gt;
==== Windows ====&lt;br /&gt;
Você tem que rodar o CMake para que ele gere os arquivos para seu sistema. Tanto compilações dentro dos códigos fontes (in-source builds) quando fora deles (out-of-source builds) são suportadas pelo CMake, mas in-source builds são prevenidos pela implementação atual do KDE.&lt;br /&gt;
&lt;br /&gt;
Supondo que você tenha o diretório kdelibs\ em c:\daten\kde4, faça o seguinte:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
c:\daten\kde4&amp;gt; cd kdelibs\win&lt;br /&gt;
c:\daten\kde4&amp;gt; cmake&lt;br /&gt;
c:\daten\kde4&amp;gt; make &lt;br /&gt;
c:\daten\kde4&amp;gt; make install&lt;br /&gt;
c:\daten\kde4&amp;gt; cd ..&lt;br /&gt;
c:\daten\kde4&amp;gt; mkdir kdelibs-build&lt;br /&gt;
c:\daten\kde4&amp;gt; cd kdelibs-build&lt;br /&gt;
c:\daten\kde4\kdelibs-build&amp;gt; cmake ..\kdelibs&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Isso gerará os Makefiles para compilar kdelibs\ em kdelibs-build\. Veja [[Projects/KDE_on_Windows|KDE no Windows]] para mais informações sobre como compilar o KDE no Windows.&lt;br /&gt;
&lt;br /&gt;
==== Arquivos de projeto do KDevelop 3 ====&lt;br /&gt;
Se você prefere arquivos de projeto para o KDevelop 3 (que serão basicamente Makefiles acompanhados de alguns arquivos extra para o KDevelop), rode-o desta forma:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cmake ../kdelibs -GKDevelop3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Use 'cmake -h' para descobrir que geradores o CMake suporta e outras opções.&lt;br /&gt;
&lt;br /&gt;
==== CMake e Qt4 ====&lt;br /&gt;
Para localizar o Qt 4, o CMake procura por qmake no seu path de execução. CMake ''não'' usa a variável de ambiente QTDIR. Então esteja certo que o primeiro qmake encontrado no path de execução é o que você deve usar.&lt;br /&gt;
&lt;br /&gt;
==== Mais detalhes ====&lt;br /&gt;
Quando CMake finalizar, ele terá criado um arquivo chamado &amp;quot;CMakeCache.txt&amp;quot;.  Esse arquivo contem todas as configurações que o CMake detectou em seu sistema. Se você quiser executar o CMake com outro gerador ou se você quer que o CMake detecte tudo novamente, exclua esse arquivo.&lt;br /&gt;
&lt;br /&gt;
Se o CMake não encontrar alguma coisa, mas você sabe que está em algum lugar, você pode dizer manualmente ao CMake onde encontrá-la. O CMake usa variáveis para guardar essas informações. Essas variáveis são armazenadas no já mencionado arquivo CMakeCache.txt. Você tem três opções para ajustá-las manualmente:&lt;br /&gt;
* informe ao CMake o valor correto pela linha de comando: cmake ../kdelibs -DNOME_DA_VARIAVEL=valor&lt;br /&gt;
* use ccmake, que provê uma GUI baseada em curses para ajustar as variáveis do CMake (rode: ccmake ../kdelibs)&lt;br /&gt;
* modifique CMakeCache.txt diretamente (não recomendado)&lt;br /&gt;
&lt;br /&gt;
Você deve rodar &amp;quot;ccmake ../kdelibs&amp;quot; ao menos uma vez para que você tenha uma ideia de que variáveis o CMake usa. Pressione &amp;quot;T&amp;quot; para ver também as variáveis &amp;quot;avançadas&amp;quot;. Então, se o CMake não encontrar alguma coisa, inicie ccmake e ajuste-o manualmente.&lt;br /&gt;
&lt;br /&gt;
==== Variáveis de linha de comando ====&lt;br /&gt;
&lt;br /&gt;
Algumas variáveis de linha de comando do CMake que você deve querer configurar:&lt;br /&gt;
* '''CMAKE_INSTALL_PREFIX''': cmake ../kdelibs -DCMAKE_INSTALL_PREFIX=/opt/kde4 é equivalente a ./configure --prefix=/opt/kde4&lt;br /&gt;
* '''[[Development/CMake/Build_Types|CMAKE_BUILD_TYPE]]''': decide que tipo de compilação você quer. Você pode escolher entre &amp;quot;debugfull&amp;quot;, &amp;quot;debug&amp;quot;, &amp;quot;profile&amp;quot;, &amp;quot;relwithdebinfo&amp;quot; e &amp;quot;release&amp;quot;. O padrão é &amp;quot;relwithdebinfo&amp;quot;. Vá à página [[Development/CMake/Build_Types|Tipos de compilação do CMake]] para uma explicação mais detalhada.&lt;br /&gt;
* '''KDE4_BUILD_TESTS=ON''': cria Makefiles com programas de teste de compilação e provê alvos 'test'.&lt;br /&gt;
* '''KDE4_TEST_OUTPUT=xml''': Testes unitários usando o framework QTestLib criará arquivos de log formatados em xml.&lt;br /&gt;
* '''KDE4_DISABLE_MULTIMEDIA=ON''': Compila o KDE sem nenhum suporte a multimídia (áudio e vídeo).&lt;br /&gt;
* '''BUILD_foo=OFF''': desativa a compilação para o prjeto no subdiretório 'foo'.&lt;br /&gt;
* '''WITH_foo''': há várias opções - por exemplo, WITH_CUPS ou WITH_Jasper. Se você desativá-las, o CMake não irá nem mesmo tentar procurar por esse pacote. Se estiver ativado, o CMake tentará encontrá-lo. Se falhar com isso, você pode ajustar manualmente, como descrito acima.&lt;br /&gt;
&lt;br /&gt;
=== Variáveis de ambiente ===&lt;br /&gt;
Se você tem cabeçalhos e bibliotecas instalados em localizações fora do padrão que o CMake não pode encontrar, então configure as seguintes variáveis de ambiente. Isso pode ser bastante útil se, por exemplo você instalar kdesupport em ~/install/kdesupport .&lt;br /&gt;
Apesar da nomeação similar, essas variáveis não funcionam se passadas por linha de comando:&lt;br /&gt;
* '''CMAKE_INCLUDE_PATH''', por exemplo, export CMAKE_INCLUDE_PATH=/sw/include&lt;br /&gt;
* '''CMAKE_LIBRARY_PATH''', por exemplo, export CMAKE_LIBRARY_PATH=/sw/lib&lt;br /&gt;
* '''CMAKE_PROGRAM_PATH''', por exemplo, export CMAKE_PROGRAM_PATH=/sw/bin&lt;br /&gt;
&lt;br /&gt;
A partir do CMake 2.6.0, o mesmo efeito das variáveis acima pode ser atingido com apenas um comando:&lt;br /&gt;
* '''CMAKE_PREFIX_PATH''', por exemplo, export CMAKE_PREFIX_PATH=/sw&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para mais informações sobre variáveis, veja [http://www.cmake.org/Wiki/CMake_Useful_Variables esta página do wiki cmake.org]&lt;br /&gt;
&lt;br /&gt;
=== Indo além ===&lt;br /&gt;
Se o CMake finalizar com &amp;quot;Generating done&amp;quot;, não houve erros. Mas, se finalizar com &amp;quot;Configuring done&amp;quot;, então há erros para você consertar.  Se o CMake finalizar com sucesso, rode sua ferramenta de compilação (por exemplo: make, KDevelop, XCode ou MSVC), compile e espere que a compilação termine. Então rode &amp;quot;make install&amp;quot; como root.&lt;br /&gt;
&lt;br /&gt;
Se houve uma falha que diz algo como:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
CMake Error: This project requires some variables to be set,&lt;br /&gt;
and cmake can not find them.&lt;br /&gt;
Please set the following variables:&lt;br /&gt;
X11_XTest_LIB (ADVANCED)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
então está faltando uma biblioteca (ou outra dependência). Para descobrir qual biblioteca é, procure no diretório pela variável que o CMake não pôde encontrar no diretório cmake/modules. No exemplo acima, ela é&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
find_library(X11_XTest_LIB Xtst ${X11_LIB_SEARCH_PATH})&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Logo, a biblioteca que está faltando é Xtst. Então você deve encontrá-la (provavelmente instalando libXtst-devel) e rodar cmake novamente.&lt;br /&gt;
&lt;br /&gt;
== Usando o CMake para uma aplicação simples ==&lt;br /&gt;
&lt;br /&gt;
Aqui está o CMakeLists.txt mais simples possível:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
add_executable(hello main.cpp)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Isso criará um executável chamado &amp;quot;hello&amp;quot; (ou &amp;quot;hello.exe&amp;quot; no Windows) do arquivo de código fonte main.cpp. Você pode misturar arquivos C e C++ se você quiser. Você pode ter múltiplos executáveis e bibliotecas num CMakeLists.txt.  O mesmo arquivo de código fonte pode ser usado em vários alvos: ele será compilado para cada um, independentemente dos outros. Provavelmente, a parte mais importante da linguagem CMake são as variáveis:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
set( MEUS_FONTES main.cpp widget.cpp)&lt;br /&gt;
message(STATUS &amp;quot;meus fontes: ${MEUS_FONTES}&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Então, use o comando SET() para definir o valor de uma variável. Se você listar mais de uma string, a variável será uma lista. A list is a list of strings separated by semicolons. If you set it to only one item, it will have just that value. To get the value of a variable, use ${VAR}.&lt;br /&gt;
You can iterate over a list using FOREACH():&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
foreach(next_ITEM ${MY_SOURCES})&lt;br /&gt;
   message(STATUS &amp;quot;next item: ${next_ITEM}&amp;quot;)&lt;br /&gt;
endforeach(next_ITEM ${MY_SOURCES})&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The commands in CMake are case-insensitive.  Names of variables and names of parameter are case-sensitive.&lt;br /&gt;
&lt;br /&gt;
You can also test for various things:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
if (UNIX)&lt;br /&gt;
   message(STATUS &amp;quot;This is UNIX (including OS X and CygWin)&amp;quot;)&lt;br /&gt;
endif (UNIX)&lt;br /&gt;
&lt;br /&gt;
if (MSVC)&lt;br /&gt;
   set(MY_SRCS ${MY_SRCS} winextra.cpp)&lt;br /&gt;
endif (MSVC)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
In this second example  you can see also how to append items to a list.&lt;br /&gt;
&lt;br /&gt;
In the cmake Wiki there is also a [http://www.cmake.org/Wiki/HowToBuildKDE4Software  tutorial] on using cmake to build KDE 4 software. It is recommended reading.&lt;br /&gt;
&lt;br /&gt;
== Using CMake for a KDE Project ==&lt;br /&gt;
&lt;br /&gt;
Here's a basic CMakeList file that builds a small KDE 4 project:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
project( kde4project )&lt;br /&gt;
find_package( KDE4 REQUIRED )&lt;br /&gt;
include_directories( ${KDE4_INCLUDES} )&lt;br /&gt;
&lt;br /&gt;
set( KDE4ProjectSources kde4mainapp.cpp someclass.cpp someotherclass.cpp )&lt;br /&gt;
&lt;br /&gt;
kde4_add_executable( kde4project ${KDE4ProjectSources} )&lt;br /&gt;
&lt;br /&gt;
target_link_libraries( kde4project ${KDE4_KDEUI_LIBS} ${KDE4_KPARTS_LIBS} )&lt;br /&gt;
&lt;br /&gt;
install( TARGETS kde4project  ${INSTALL_TARGETS_DEFAULT_ARGS} )&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''target_link_libraries'' contains the development libraries that are linked to your program. E.g. if you want to link to libtidy-devel, your library file name may be called /usr/local/lib/libtidy.a. You would then add -ltidy to a gcc call. Here, you add ''tidy'' to your target_link_libraries. If possible, use pre-defined variables or macros like ${KDE4_KDEUI_LIBS}.&lt;br /&gt;
&lt;br /&gt;
''install (TARGETS'' is where the target will finally be installed. If you do not have this line, make install will not be available.&lt;br /&gt;
&lt;br /&gt;
Variables, macros and other useful information specific to KDE can be found at the [[Development/CMake/Addons for KDE|CMake addons for KDE]] page.&lt;br /&gt;
&lt;br /&gt;
== Extending CMake ==&lt;br /&gt;
CMake can be extended using cmake scripts. CMake comes with a number of scripts; under UNIX they are by default installed to /usr/local/share/CMake/Modules/. The KDE libraries install also a set of cmake modules into share/apps/cmake/modules/. The files located there will be preferred over the ones in the system global cmake module path. &lt;br /&gt;
For detecting software packages there are FindFOO.cmake files, see [http://www.cmake.org/Wiki/CMake_HowToFindInstalledSoftware here] for more information.&lt;br /&gt;
You can also write macros in CMake. They are powerful enough to do most things you will need to build software, but they are not intended to be used as a general purpose programming language.&lt;br /&gt;
&lt;br /&gt;
== Converting autotools-based KDE software to CMake ==&lt;br /&gt;
In kdesdk/cmake/ you can find a script am2cmake . This is a ruby script, so you need to have ruby installed. Run am2cmake in the toplevel directory of your sources:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cd src/mykooltool/&lt;br /&gt;
$ am2cmake --kde4&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Don't forget the switch &amp;quot;--kde4&amp;quot;, otherwise it won't generate files suitable for KDE 4 software. The converted files 'may' work as they are, but complicated projects will require some additional editing.&lt;br /&gt;
&lt;br /&gt;
You may have to:&lt;br /&gt;
* add more include direcories, using INCLUDE_DIRECTORIES()&lt;br /&gt;
* add more link libraries, using TARGET_LINK_LIBRARIES()&lt;br /&gt;
* add some compile switches, using ADD_DEFINITIONS()&lt;br /&gt;
* add some &amp;quot;configure&amp;quot; checks, see [http://www.cmake.org/Wiki/CMake_HowToDoPlatformChecks How To Do Platform Checks] and [http://www.cmake.org/Wiki/CMake_HowToFindInstalledSoftware How To Find Installed Software]&lt;br /&gt;
* take special care of former libtool convenience libraries. They are not supported by cmake, instead there will be a file ConvenienceLibs.cmake created.  In this file you will find for every convenience lib a variable, which contains all source files of this convenience lib.  For the targets which linked to this convenience lib, just add the variable to the sources.&lt;br /&gt;
* a file AdditionalInfo.txt will be created.  There you will see all *.in and *.in.in files of your project. The stuff done in these files will have to be converted manually to cmake.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming]]&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:FAQs]]&lt;/div&gt;</summary>
		<author><name>R Rios</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User:R_Rios</id>
		<title>User:R Rios</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User:R_Rios"/>
				<updated>2009-02-27T00:55:40Z</updated>
		
		<summary type="html">&lt;p&gt;R Rios: New page: Luiz Romário Santana Rios Brasileiro, natural de Feira de Santana, Bahia. Nascido em 21 de junho de 1990.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Luiz Romário Santana Rios&lt;br /&gt;
Brasileiro, natural de Feira de Santana, Bahia.&lt;br /&gt;
Nascido em 21 de junho de 1990.&lt;/div&gt;</summary>
		<author><name>R Rios</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Talk:Development/Tutorials/Plasma/GettingStarted_(pt_BR)</id>
		<title>Talk:Development/Tutorials/Plasma/GettingStarted (pt BR)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Talk:Development/Tutorials/Plasma/GettingStarted_(pt_BR)"/>
				<updated>2009-02-27T00:48:51Z</updated>
		
		<summary type="html">&lt;p&gt;R Rios: New page: Por favor, deem uma polida nesse artigo. Foi meio chato traduzir, o artigo original não está muito bem escrito.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Por favor, deem uma polida nesse artigo. Foi meio chato traduzir, o artigo original não está muito bem escrito.&lt;/div&gt;</summary>
		<author><name>R Rios</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Plasma/GettingStarted_(pt_BR)</id>
		<title>Development/Tutorials/Plasma/GettingStarted (pt BR)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Plasma/GettingStarted_(pt_BR)"/>
				<updated>2009-02-27T00:46:41Z</updated>
		
		<summary type="html">&lt;p&gt;R Rios: New page: {{Template:I18n/Language Navigation Bar|Development/Tutorials/Plasma/GettingStarted}}  {{TutorialBrowser|  series=Plasma Tutorial|  name=Criando seu primeiro plasmoid|  pre=[http://mindvie...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials/Plasma/GettingStarted}}&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
&lt;br /&gt;
series=Plasma Tutorial|&lt;br /&gt;
&lt;br /&gt;
name=Criando seu primeiro plasmoid|&lt;br /&gt;
&lt;br /&gt;
pre=[http://mindview.net/Books/TICPP/ThinkingInCPP2e.html C++], [http://www.trolltech.com/products/qt/ Qt], [[Getting_Started/Build/KDE4|KDE4 development environment]]|&lt;br /&gt;
&lt;br /&gt;
next=| &lt;br /&gt;
&lt;br /&gt;
reading=[[Development/Tutorials/CMake|CMake]]&lt;br /&gt;
}}&lt;br /&gt;
==Introdução==&lt;br /&gt;
Este tutorial precisa de, no mínimo, KDE 4.2 para ser compilado.&lt;br /&gt;
Nós vamos criar um plasmoid simples neste tutorial. Para deixar as coisas simples, nós só vamos criar um plasmoid estático contendo os seguintes ítens: &lt;br /&gt;
&lt;br /&gt;
* Uma imagem SVG&lt;br /&gt;
* Um ícone&lt;br /&gt;
* Algum texto legal&lt;br /&gt;
&lt;br /&gt;
[[image:creatingyourfirstplasmoid1.png|frame|center]]&lt;br /&gt;
&lt;br /&gt;
== O código ==&lt;br /&gt;
=== O arquivo .desktop ===&lt;br /&gt;
Todo plasmoid precisa de um arquivo .desktop para dizer ao Plasma como ele deve ser iniciado e qual é o seu nome. &lt;br /&gt;
&lt;br /&gt;
'''plasma-applet-tutorial1.desktop'''&lt;br /&gt;
&amp;lt;code ini&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Name=Tutorial 1&lt;br /&gt;
Comment=Plasma Tutorial 1&lt;br /&gt;
Type=Service&lt;br /&gt;
ServiceTypes=Plasma/Applet&lt;br /&gt;
&lt;br /&gt;
X-KDE-Library=plasma_applet_tutorial1&lt;br /&gt;
X-KDE-PluginInfo-Author=Bas Grolleman&lt;br /&gt;
X-KDE-PluginInfo-Email=bgrolleman@emendo-it.nl&lt;br /&gt;
X-KDE-PluginInfo-Name=plasma_applet_tutorial1&lt;br /&gt;
X-KDE-PluginInfo-Version=0.1&lt;br /&gt;
X-KDE-PluginInfo-Website=http://plasma.kde.org/&lt;br /&gt;
X-KDE-PluginInfo-Category=Examples&lt;br /&gt;
X-KDE-PluginInfo-Depends=&lt;br /&gt;
X-KDE-PluginInfo-License=GPL&lt;br /&gt;
X-KDE-PluginInfo-EnabledByDefault=true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As partes mais importantes são '''X-KDE-Library''' e '''X-KDE-PluginInfo-Name''': eles são a &amp;quot;cola&amp;quot; entre sua classe e o Plasma. Sem eles, nada irá funcionar.  For '''X-KDE-PluginInfo-Category''', refer to the [[Projects/Plasma/PIG | PIG]].&lt;br /&gt;
&lt;br /&gt;
=== O cabeçalho ===&lt;br /&gt;
Este é o cabeçalho de exemplo. Alguns comentários foram adicionados ao código para dar mais clareza.&lt;br /&gt;
&lt;br /&gt;
'''plasma-tutorial1.h'''&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
// Aqui nós evitamos que o cabeçalho seja carregado mais de uma vez&lt;br /&gt;
#ifndef Tutorial1_HEADER&lt;br /&gt;
#define Tutorial1_HEADER&lt;br /&gt;
// Nós precisamos dos cabeçalhos do Applet Plasma&lt;br /&gt;
#include &amp;lt;KIcon&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
#include &amp;lt;Plasma/Applet&amp;gt;&lt;br /&gt;
#include &amp;lt;Plasma/Svg&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
class QSizeF;&lt;br /&gt;
 &lt;br /&gt;
// Definição do nosso applet Plasma&lt;br /&gt;
class PlasmaTutorial1 : public Plasma::Applet&lt;br /&gt;
{&lt;br /&gt;
    Q_OBJECT&lt;br /&gt;
    public:&lt;br /&gt;
        // Criar/Destruir básico&lt;br /&gt;
        PlasmaTutorial1(QObject *parent, const QVariantList &amp;amp;args);&lt;br /&gt;
        ~PlasmaTutorial1();&lt;br /&gt;
 &lt;br /&gt;
        // O procedimento paintInterface desenha o applet na tela&lt;br /&gt;
        void paintInterface(QPainter *painter,&lt;br /&gt;
                const QStyleOptionGraphicsItem *option,&lt;br /&gt;
                const QRect&amp;amp; contentsRect);&lt;br /&gt;
	void init();&lt;br /&gt;
&lt;br /&gt;
    private:&lt;br /&gt;
        Plasma::Svg m_svg;&lt;br /&gt;
        KIcon m_icon;&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
// Este é o comando que liga seu applet ao arquivo .desktop&lt;br /&gt;
K_EXPORT_PLASMA_APPLET(tutorial1, PlasmaTutorial1)&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== QRectF boundingRect() ====&lt;br /&gt;
A função &amp;lt;tt&amp;gt;boundingRect()&amp;lt;/tt&amp;gt; diz ao Plasma o tamanho real do plasmoid. Isto é importante porque nós precisamos saber quanto espaço é tomado na tela. &lt;br /&gt;
{{tip|&lt;br /&gt;
Se você tem problemas com seu plasmoid deixando um rastro de pixels enquanto é arrastado, isso é, geralmente, causado por um boundingRect() incorreto.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== void paintInterface(QRectF contentsRect) ====&lt;br /&gt;
Esta pode ser considerada a função principal, já que desenha o plasmoid na tela. Aqui você define como você quer que seu plasmoid fique.&lt;br /&gt;
Você só deve desenhar nos limites definidos por contentsRect e evitar usar  geometry(). Quando um plasmoid não tem um fundo padrão - quando, por exemplo, está desativado com uma chamada de setBackgroundHints() ou está no painel - geometry() e boundingRect() se comportam igualmente; no entanto, quando o fundo padrão está ativado (o caso usual), o applet vai ter uma margem onde não ele deveria ser desenhado.&lt;br /&gt;
&lt;br /&gt;
==== K_EXPORT_PLASMA_APPLET ( &amp;lt;name&amp;gt;, &amp;lt;class&amp;gt; ) ====&lt;br /&gt;
Esta é uma parte pequena, mas muito importante que liga o nome da classe ao nome do applet no arquivo .desktop. Se parecer que seu applet não foi carregado, deve haver uma diferença entre esta declaração e seu arquivo .desktop.&lt;br /&gt;
&lt;br /&gt;
{{tip|&lt;br /&gt;
K_EXPORT_PLASMA_APPLET adiciona &amp;quot;plasma_applet_&amp;quot;. Por favor, preste atenção a isto quando estiver configurando seu arquivo .desktop para evitar uma diferença de nome.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== O arquivo de trabalho de verdade ===&lt;br /&gt;
Aqui está o corpo da função, novamente com vários comentários. &lt;br /&gt;
&lt;br /&gt;
'''plasma-tutorial1.cpp'''&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
#include &amp;quot;plasma-tutorial1.h&amp;quot;&lt;br /&gt;
#include &amp;lt;QPainter&amp;gt;&lt;br /&gt;
#include &amp;lt;QFontMetrics&amp;gt;&lt;br /&gt;
#include &amp;lt;QSizeF&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
#include &amp;lt;plasma/svg.h&amp;gt;&lt;br /&gt;
#include &amp;lt;plasma/theme.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
PlasmaTutorial1::PlasmaTutorial1(QObject *parent, const QVariantList &amp;amp;args)&lt;br /&gt;
    : Plasma::Applet(parent, args),&lt;br /&gt;
    m_svg(this),&lt;br /&gt;
    m_icon(&amp;quot;document&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
    m_svg.setImagePath(&amp;quot;widgets/background&amp;quot;);&lt;br /&gt;
    // Isto vai nos dar o fundo padrão de applets, de graça!&lt;br /&gt;
    setBackgroundHints(DefaultBackground);&lt;br /&gt;
    resize(200, 200);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
PlasmaTutorial1::~PlasmaTutorial1()&lt;br /&gt;
{&lt;br /&gt;
    if (hasFailedToLaunch()) {&lt;br /&gt;
        // Pôr alguma limpeza aqui&lt;br /&gt;
    } else {&lt;br /&gt;
        // Salvar configurações&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void PlasmaTutorial1::init()&lt;br /&gt;
{&lt;br /&gt;
 &lt;br /&gt;
    // Uma pequena demonstração da função setFailedToLaunch&lt;br /&gt;
    if (m_icon.isNull()) {&lt;br /&gt;
        setFailedToLaunch(true, &amp;quot;Nenhum mundo para dizer olá&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
void PlasmaTutorial1::paintInterface(QPainter *p,&lt;br /&gt;
        const QStyleOptionGraphicsItem *option, const QRect &amp;amp;contentsRect)&lt;br /&gt;
{&lt;br /&gt;
    p-&amp;gt;setRenderHint(QPainter::SmoothPixmapTransform);&lt;br /&gt;
    p-&amp;gt;setRenderHint(QPainter::Antialiasing);&lt;br /&gt;
 &lt;br /&gt;
    // Agora nós desenhamos o applet, começando pelo svg&lt;br /&gt;
    m_svg.resize((int)contentsRect.width(), (int)contentsRect.height());&lt;br /&gt;
    m_svg.paint(p, (int)contentsRect.left(), (int)contentsRect.top());&lt;br /&gt;
 &lt;br /&gt;
    // Colocamos ícone e texto&lt;br /&gt;
    p-&amp;gt;drawPixmap(7, 0, m_icon.pixmap((int)contentsRect.width(),(int)contentsRect.width()-14));&lt;br /&gt;
    p-&amp;gt;save();&lt;br /&gt;
    p-&amp;gt;setPen(Qt::white);&lt;br /&gt;
    p-&amp;gt;drawText(contentsRect,&lt;br /&gt;
                Qt::AlignBottom | Qt::AlignHCenter,&lt;br /&gt;
                &amp;quot;Olá, plasmoid!&amp;quot;);&lt;br /&gt;
    p-&amp;gt;restore();&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
#include &amp;quot;plasma-tutorial1.moc&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Plasma/Svg ====&lt;br /&gt;
Como você pode ver no código de exemplo, estamos usando o objeto {{class|Plasma::Svg}}. Há algumas coisas importantes para notar aqui.&lt;br /&gt;
&lt;br /&gt;
Em primeiro lugar, estamos usando um path relativo ('''widgets/background'''), que faz com que {{class|Plasma::Svg}} use {{class|Plasma::Theme}} para localizar os dados SVG. Enquanto {{class|Plasma::Svg}} suporta carregar arquivos arbitrários quando é passado um path absoluto, ela usa paths relativos do tema sempre que possível e sempre que se aplica temas ao Plasma. Assim, plasmoids individuais parecem mais um grupo do que um conjunto de aplicações separadas. Você pode ver uma lista de imagens disponíveis na [[Projects/Plasma/Theme|página de temas do Plasma]].&lt;br /&gt;
&lt;br /&gt;
Em ambos os modos, {{class|Plasma::Svg}} pode ser usada para desenhar um subconjunto do arquivo SVG passando para ele um id de um elemento que aparece no documento SVG. Um bom exemplo: se você abrir o arquivo clock.svg que vem com o tema padrão, você verá que ele tem um fundo, 3 ponteiros (hora, minuto e segundos) e uma frente (o vidro). Graças à habilidade de pôr todos os elementos num arquivo, o arquivo SVG mostra um relógio. Isso é bem melhor para artistas do que editar 5 arquivos separados - que eles tem que imaginar que estão um encima do outro -, e muito melhor para a performace, já que apenas uma renderização SVG e uma leitura de arquivo bastam.&lt;br /&gt;
&lt;br /&gt;
==== setBackgroundHints(DefaultBackground) ====&lt;br /&gt;
Como desenhar o fundo é uma função comum, há uma maneira rápida e fácil de fazê-lo. Adicionando &amp;lt;tt&amp;gt;setBackgroundHints(DefaultBackground)&amp;lt;/tt&amp;gt; ao código, o fundo padrão do Plasma é desenhado ao fundo do seu plasmoid. Isso não só economiza tempo e código, como também cria uma apresentação mais consistente ao usuário.&lt;br /&gt;
&lt;br /&gt;
==== O método init() ====&lt;br /&gt;
No construtor você apenas diz ao Plasma o fundo e o arquivo de configuração, se houver. Você também configura o tamanho inicial no construtor. Depois disso, o Plasma vai cuidar de qualquer redimensionamento, e você não vai mais precisar se preocupar sobre o tamanho. No método &amp;lt;tt&amp;gt;init()&amp;lt;/tt&amp;gt; você inicializa tudo que for necessário, como ler os dados de configuração, por exemplo.&lt;br /&gt;
&lt;br /&gt;
==== hasFailedToLaunch() ====&lt;br /&gt;
Se, por alguma razão, a inicialização do applet falhar (as bibliotecas não puderam ser carregadas, não foi encontrado o hardware necessário, etc.), esse método retorna verdadeiro. O uso dessa função dá uma chance de fazer a limpeza necessária ao seu aplicativo. &lt;br /&gt;
&lt;br /&gt;
==== setFailedToLaunch(bool, QString) ====&lt;br /&gt;
Quando não é possível iniciar sua aplicação, essa função permite que você informe ao Plasma e dê um porquê opcional. Plasma vai então desenhar uma interface de erro padronizada para informar ao usuário sobre a situação e seu applet não será chamado para desenhar nada dali para frente. Se seu plasmoid ficar mais complexo e depender de múltiplos fatores, essa é a melhor maneira para fazer uma limpeza.&lt;br /&gt;
&lt;br /&gt;
==== dataUpdated ====&lt;br /&gt;
Se você se conectasse a qualquer um dos data-engines do Plasma você teria que implementar uma função chamada dataUpdated no seu plasmoid. Ela é chamada se o data-engine lhe mandar dados - por exemplo: se seu plasmoid tivesse que recalcular o conteúdo.&lt;br /&gt;
&lt;br /&gt;
==== Determinar o tamanho e a geometria do applet: geometry() e contentsRect() ====&lt;br /&gt;
Se você precisar saber, no código do seu applet, qual seus tamanho e geometria, chame contentsRect() e contentsRect().size(). Evite chamar geometry() e size(), pois eles não levam em conta o tamanho da margem, configurado pelo fundo padrão do applet.&lt;br /&gt;
Além disso, evite usar números absolutos ao posicionar ítens no applet, como QPoint(0, 0) para indicar o ponto superior esquedo do applet. Em vez disso, use contentsRect().topLeft().&lt;br /&gt;
&lt;br /&gt;
=== Compilando tudo. CMakeLists.txt ===&lt;br /&gt;
Finalmente, para pôr tudo junto é necessário compilar. Para dizer ao CMake o que precisa ir onde, aqui está o CMakeLists.txt. &lt;br /&gt;
&lt;br /&gt;
Para mais detalhes sobre o CMake, por favor leia [[Development/Tutorials/CMake]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
# O projeto precisa de um nome, obviamente&lt;br /&gt;
project(plasma-tutorial1)&lt;br /&gt;
&lt;br /&gt;
# Encontrar as bibliotecas necessárias&lt;br /&gt;
find_package(KDE4 REQUIRED)&lt;br /&gt;
include(KDE4Defaults)&lt;br /&gt;
&lt;br /&gt;
add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS})&lt;br /&gt;
include_directories(&lt;br /&gt;
   ${CMAKE_SOURCE_DIR}&lt;br /&gt;
   ${CMAKE_BINARY_DIR}&lt;br /&gt;
   ${KDE4_INCLUDES}&lt;br /&gt;
   )&lt;br /&gt;
&lt;br /&gt;
# Adicionamos nosso código fonte aqui&lt;br /&gt;
set(tutorial1_SRCS plasma-tutorial1.cpp)&lt;br /&gt;
&lt;br /&gt;
# Agora tenha certeza de que todos os arquivos estão no lugar certo&lt;br /&gt;
kde4_add_plugin(plasma_applet_tutorial1 ${tutorial1_SRCS})&lt;br /&gt;
target_link_libraries(plasma_applet_tutorial1 &lt;br /&gt;
                      ${KDE4_PLASMA_LIBS} ${KDE4_KDEUI_LIBS})&lt;br /&gt;
&lt;br /&gt;
install(TARGETS plasma_applet_tutorial1&lt;br /&gt;
        DESTINATION ${PLUGIN_INSTALL_DIR})&lt;br /&gt;
&lt;br /&gt;
install(FILES plasma-applet-tutorial1.desktop&lt;br /&gt;
        DESTINATION ${SERVICES_INSTALL_DIR})&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testando o Applet ==&lt;br /&gt;
Se seu ambiente de desenvolvimento atual difere da instalação teste, você tem que rodar o CMake com -DCMAKE_INSTALL_PREFIX=$KDEDIR (sendo $KDEDIR o diretório onde o KDE se encontra). Então rode make. Se a compilação ocorreu com sucesso, o programa pode ser instalado com make install (como root).&lt;br /&gt;
ou&lt;br /&gt;
* cp ./lib/plasma_applet_tutorial1.so $KDEDIR/lib &lt;br /&gt;
* cp ./plasma-applet-tutorial1.desktop $KDEDIR/share/kde4/services/&lt;br /&gt;
&lt;br /&gt;
e rode kbuildsycoca4 (para que os programas KDE saibam dos novos arquivos desktop).&lt;br /&gt;
Para testar seu applet, você pode usar o programa '''plasmoidviewer''':&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
plasmoidviewer applet_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Você pode, também, ver seu applet numa área de trabalho pequena usando o plasmoidviewer:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
plasmoidviewer -c desktop applet_name&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sendo '''applet_name''' o calor especificado dentro do .desktop para a chave '''X-KDE-PluginInfo-Name'''.&lt;br /&gt;
&lt;br /&gt;
Ou então você pode reiniciar o Plasma, para que o applet seja mostrado no navegador de applets: &lt;br /&gt;
 kbuildsycoca4&lt;br /&gt;
 kquitapp plasma # no trunk (KDE4.3): kquitapp plasma-desktop&lt;br /&gt;
 plasma          # no trunk (KDE4.3): plasma-desktop&lt;br /&gt;
&lt;br /&gt;
Se isso não funcionar você terá que reiniciar sua sessão KDE fazendo logout e, então, login.&lt;/div&gt;</summary>
		<author><name>R Rios</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Languages_(pt_BR)</id>
		<title>Development/Languages (pt BR)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Languages_(pt_BR)"/>
				<updated>2009-02-26T19:47:43Z</updated>
		
		<summary type="html">&lt;p&gt;R Rios: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Languages}}&lt;br /&gt;
&lt;br /&gt;
O KDE suporta diversas linguagens de programação para o desenvolvimento do KDE 4.&lt;br /&gt;
&lt;br /&gt;
==Estável e Maduro==&lt;br /&gt;
&lt;br /&gt;
O suporte para as seguintes linguagens está maduro, com plena manutenção e adequado para o desenvolvimento de aplicações:&lt;br /&gt;
&lt;br /&gt;
* [[Development/Languages/C++ |C++]]&lt;br /&gt;
* [[Development/Languages/Python|Python]]&lt;br /&gt;
* [[Development/Languages/Ruby|Ruby]]&lt;br /&gt;
&lt;br /&gt;
==Em Desenvolvimento==&lt;br /&gt;
&lt;br /&gt;
O suporte para as seguintes linguagens está ainda em desenvolvimento:&lt;br /&gt;
&lt;br /&gt;
* [[Development/Languages/QtSharp|C#]]&lt;br /&gt;
* [[Development/Languages/PHP-Qt|PHP]]&lt;br /&gt;
* [[Development/Languages/Lqt|Lua]]&lt;br /&gt;
&lt;br /&gt;
==Bindings Technologies and Embedding==&lt;br /&gt;
* [[Development/Languages/Smoke|Smoke]] - Provides infrastructure which is used for creating bindings for multiple languages such as Ruby, C# and PHP.&lt;br /&gt;
&lt;br /&gt;
* [[Development/Languages/Kross|Kross]] - Provides embedded scripting for C++ applications. Multiple languages such as Python, Ruby, JavaScript, QtScript, Falcon and Java are supported.&lt;br /&gt;
&lt;br /&gt;
* [[Development/Languages/QtScript|QtScript]] - The QtScript binding generator.&lt;br /&gt;
&lt;br /&gt;
==Suporte para Qt3 / KDE3==&lt;br /&gt;
* [[Development/Languages/Perl|Perl]]&lt;br /&gt;
* [[Development/Languages/Java|Java]]&lt;br /&gt;
* [[Development/Languages/JavaScript|JavaScript (ECMAScript)]]&lt;br /&gt;
* [[Development/Languages/Tools|Ferramentas de interação KDE]] (Shell)&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>R Rios</name></author>	</entry>

	</feed>