(→C++) |
(→QML 2.0) |
||
(14 intermediate revisions by 9 users not shown) | |||
Line 1: | Line 1: | ||
− | |||
− | == QML == | + | |
+ | == QML 1.0 == | ||
Plasmoids that use the QML (aka QtQuick) declarative language to describe their user interface while having the logic of the applet, in JavaScript (QML is essentially a forge between CSS and JavaScript). | Plasmoids that use the QML (aka QtQuick) declarative language to describe their user interface while having the logic of the applet, in JavaScript (QML is essentially a forge between CSS and JavaScript). | ||
This is now the '''recommended''' method of creating plasmoids, where possible. The plasmoid, or applet serves as the visualization for the data which a Plasma::DataEngine contains. | This is now the '''recommended''' method of creating plasmoids, where possible. The plasmoid, or applet serves as the visualization for the data which a Plasma::DataEngine contains. | ||
− | It allows easily the declaring of an interface and to easily create things like ListViews with native Plasma theming. It is what Plasma is leaning the most towards, especially in the Mobile, MediaCenter | + | It allows easily the declaring of an interface and to easily create things like ListViews with native Plasma theming. It is what Plasma is leaning the most towards, especially in the Mobile, MediaCenter shells. |
;[[Development/Tutorials/Plasma/QML/GettingStarted|Getting Started]] | ;[[Development/Tutorials/Plasma/QML/GettingStarted|Getting Started]] | ||
Line 31: | Line 31: | ||
:''May 2010 article from Linux Magazine'' | :''May 2010 article from Linux Magazine'' | ||
− | ;[http://www.ibm.com/developerworks/linux/library/l-kde-plasmoids/index.html Create Plasmoids using KDevelop] | + | ;[http://web.archive.org/web/20111103065058/http://www.ibm.com/developerworks/linux/library/l-kde-plasmoids/index.html? Create Plasmoids using KDevelop] |
:''Article explaining the structure of Plasma and how to create a Plasmoid'' | :''Article explaining the structure of Plasma and how to create a Plasmoid'' | ||
Line 44: | Line 44: | ||
;[[Development/Tutorials/Plasma/Services|Writing a Service]] | ;[[Development/Tutorials/Plasma/Services|Writing a Service]] | ||
:''Services provide a standardized interface for visualizations to perform "write operations". This can be for example, uploading pasted test to a pastebin service..'' | :''Services provide a standardized interface for visualizations to perform "write operations". This can be for example, uploading pasted test to a pastebin service..'' | ||
+ | |||
+ | === PackageStructures === | ||
;[[Development/Tutorials/Plasma/PackageStructure|Writing a PackageStructure Plugin]] | ;[[Development/Tutorials/Plasma/PackageStructure|Writing a PackageStructure Plugin]] | ||
Line 60: | Line 62: | ||
;[[Development/Tutorials/Plasma/WallpaperConfiguration|Wallpaper Tutorial 2]] | ;[[Development/Tutorials/Plasma/WallpaperConfiguration|Wallpaper Tutorial 2]] | ||
:''This tutorial covers how to add configuration options to the wallpaper.'' | :''This tutorial covers how to add configuration options to the wallpaper.'' | ||
+ | |||
+ | ;[[Development/Tutorials/Plasma/WallpaperDoubleBuffer|Wallpaper Tutorial 3]] | ||
+ | :''This tutorial improves the wallpaper by using the so-called 'double buffer' technique.'' | ||
=== Plasma Shells === | === Plasma Shells === | ||
Line 65: | Line 70: | ||
;[[Development/Tutorials/Plasma/ShellDesign|Creating a Plasma Shell]] | ;[[Development/Tutorials/Plasma/ShellDesign|Creating a Plasma Shell]] | ||
:''This tutorial covers the essentials of writing a new Plasma shell from scratch. A must-read for anyone creating a new or modifying an existing Plasma Shell. Existing Plasma shells include Plasma Desktop, Plasma Netbook, Plasma Mobile, Plasma Media Center, Plasma Screensaver, Plasma KPart and Plasma KDM, and all follow the patterns documented here.'' | :''This tutorial covers the essentials of writing a new Plasma shell from scratch. A must-read for anyone creating a new or modifying an existing Plasma Shell. Existing Plasma shells include Plasma Desktop, Plasma Netbook, Plasma Mobile, Plasma Media Center, Plasma Screensaver, Plasma KPart and Plasma KDM, and all follow the patterns documented here.'' | ||
+ | |||
+ | === Containment actions === | ||
+ | ;[[Development/Tutorials/Plasma/ContainmentAction|Creating a Plasma ContainmentAction]] | ||
+ | :"This tutorial covers the essentials of writing a new Plasma ContainmentAction. You can use a ContainmentAction e.g. for desktop context menus." | ||
== JavaScript == | == JavaScript == | ||
Line 76: | Line 85: | ||
;[[Development/Tutorials/Plasma/JavaScript/DataEngine|Getting Data]] | ;[[Development/Tutorials/Plasma/JavaScript/DataEngine|Getting Data]] | ||
− | :''How to | + | :''How to retrieve data from a data engine'' |
;[[Development/Tutorials/Plasma/JavaScript/NowPlaying|Now Playing]] | ;[[Development/Tutorials/Plasma/JavaScript/NowPlaying|Now Playing]] | ||
Line 101: | Line 110: | ||
== Python == | == Python == | ||
+ | There are some sample plasmoids written in python https://projects.kde.org/projects/kde/kdeexamples/repository/revisions/master/show/plasma/python | ||
+ | |||
+ | === Plasmoids === | ||
;[[Development/Tutorials/Plasma/Python/GettingStarted|Getting Started]] | ;[[Development/Tutorials/Plasma/Python/GettingStarted|Getting Started]] | ||
:''Creating and running your first plasmoid in Python'' | :''Creating and running your first plasmoid in Python'' | ||
Line 110: | Line 122: | ||
;[[Development/Tutorials/Plasma/Python/Using DataEngines|Using DataEngines]] | ;[[Development/Tutorials/Plasma/Python/Using DataEngines|Using DataEngines]] | ||
:''How to use DataEngines from a plasmoid'' | :''How to use DataEngines from a plasmoid'' | ||
+ | |||
+ | === DataEngines === | ||
;[[Development/Tutorials/Plasma/Python/Writing DataEngines|Writing DataEngines]] | ;[[Development/Tutorials/Plasma/Python/Writing DataEngines|Writing DataEngines]] | ||
Line 116: | Line 130: | ||
;[[Development/Tutorials/Plasma/PythonPlasmoid|Writing a Plasmoid in Python]] | ;[[Development/Tutorials/Plasma/PythonPlasmoid|Writing a Plasmoid in Python]] | ||
:''Writing a simple battery graph in python'' | :''Writing a simple battery graph in python'' | ||
+ | |||
+ | === Runners === | ||
;[[Development/Tutorials/Plasma/PythonRunner|Writing a KRunner plugin in Python]] | ;[[Development/Tutorials/Plasma/PythonRunner|Writing a KRunner plugin in Python]] | ||
Line 121: | Line 137: | ||
== Ruby == | == Ruby == | ||
+ | |||
+ | === Plasmoids === | ||
+ | |||
;[[Development/Tutorials/Plasma/Ruby/GettingStarted|Getting Started]] | ;[[Development/Tutorials/Plasma/Ruby/GettingStarted|Getting Started]] | ||
:''Creating and running your first plasmoid in Ruby'' | :''Creating and running your first plasmoid in Ruby'' | ||
Line 129: | Line 148: | ||
;[[Development/Tutorials/Plasma/Ruby/SimplePasteApplet|Writing a simple paste applet]] | ;[[Development/Tutorials/Plasma/Ruby/SimplePasteApplet|Writing a simple paste applet]] | ||
:''A tutorial explaining how to set up a plasmoid, create a simple paste applet using widgets and add Plasma features seen elsewhere. Complete with tips for those who have never programmed before.'' | :''A tutorial explaining how to set up a plasmoid, create a simple paste applet using widgets and add Plasma features seen elsewhere. Complete with tips for those who have never programmed before.'' | ||
− | |||
− | |||
− | |||
;[[Development/Tutorials/Plasma/Ruby/Blinker|Use SVG artwork in the simplest way possible]] | ;[[Development/Tutorials/Plasma/Ruby/Blinker|Use SVG artwork in the simplest way possible]] | ||
:''Follow a fellow student as he asks around about SVG usage and explains why the code examples work. This is a wiki so feel free to add your own insights until this tutorial can be considered complete.'' | :''Follow a fellow student as he asks around about SVG usage and explains why the code examples work. This is a wiki so feel free to add your own insights until this tutorial can be considered complete.'' | ||
+ | |||
+ | === DataEngines === | ||
+ | |||
+ | ;[[Development/Tutorials/Plasma/Ruby/Writing DataEngines|Writing DataEngines]] | ||
+ | :''How to write your own Plasma DataEngine using Ruby'' | ||
== Web Technologies (HTML/JS/CSS) == | == Web Technologies (HTML/JS/CSS) == | ||
Line 147: | Line 168: | ||
;[[Development/Tutorials/Plasma/ApplicationShell|Integrate Plasma in Applications]] | ;[[Development/Tutorials/Plasma/ApplicationShell|Integrate Plasma in Applications]] | ||
:''This tutorial shows you how to make an application dashboard based on Plasma technologies.'' | :''This tutorial shows you how to make an application dashboard based on Plasma technologies.'' | ||
+ | |||
+ | == Packages == | ||
+ | |||
+ | ;[[Development/Tutorials/Plasma/PackageOverview|Plasma Packages]] | ||
+ | :''An overview of what makes up a Plasma Package and what they are and can be used for.'' | ||
+ | |||
+ | ;[[Development/Tutorials/Plasma/PackageStructure|Writing a PackageStructure Plugin in C++]] | ||
+ | :''PackageStructure plugins allow custom Packages to be defined, installed, removed and listed as well as provide access their contents at runtime. Packages may contain any kind of data addons, including scripts.'' | ||
== Themes == | == Themes == | ||
Line 160: | Line 189: | ||
;[[KDE_System_Administration/PlasmaDesktopScripting#Activity_templates|Creating a Plasma Activity Template Quickstart]] | ;[[KDE_System_Administration/PlasmaDesktopScripting#Activity_templates|Creating a Plasma Activity Template Quickstart]] | ||
:''A quick guide to creating your first Plasma Activity Template'' | :''A quick guide to creating your first Plasma Activity Template'' | ||
+ | |||
+ | == QML 2.0 == | ||
+ | Plasmoids that use the QML 2.0 declarative language to describe their user interface while having the logic of the applet, in JavaScript. | ||
+ | |||
+ | This is now the '''recommended''' method of creating plasmoids, where possible. The plasmoid, or applet serves as the visualization for the data which a Plasma::DataEngine contains. | ||
+ | |||
+ | It allows easily the declaring of an interface and to easily create things like ListViews with native Plasma theming. It is what Plasma is leaning the most towards, especially in the Mobile, MediaCenter shells. | ||
+ | |||
+ | ;[[Development/Tutorials/Plasma2/QML2/GettingStarted|Getting Started]] | ||
+ | :''Creating and running your first plasmoid in QML 2.0'' | ||
+ | |||
+ | ;[[Development/Tutorials/Plasma2/QML2/Basic_ListView|Basic List Plasmoid]] | ||
+ | :''Make a QML 2.0 ListView which displays basic text objects as items. Utilizes native Plasma theming and animations.'' | ||
+ | |||
+ | ;[[Development/Tutorials/Plasma2/QML2/API|API Reference]] | ||
+ | :''The QML 2.0 Plasmoid API. Useful for referencing what is available in the runtime, what are the differences with the pure JavaScript ScriptEngine, the differences between pure Qt 5.2, QML 2.0 and Plasma 2, and as a study aid for the tutorials above.'' | ||
== Resources == | == Resources == |
Plasmoids that use the QML (aka QtQuick) declarative language to describe their user interface while having the logic of the applet, in JavaScript (QML is essentially a forge between CSS and JavaScript).
This is now the recommended method of creating plasmoids, where possible. The plasmoid, or applet serves as the visualization for the data which a Plasma::DataEngine contains.
It allows easily the declaring of an interface and to easily create things like ListViews with native Plasma theming. It is what Plasma is leaning the most towards, especially in the Mobile, MediaCenter shells.
Plasma has built-in JavaScript (also known as ECMAScript, and often referred to as QtScript in the context of Qt) scripting support without requiring any external dependencies.
There are some sample plasmoids written in python https://projects.kde.org/projects/kde/kdeexamples/repository/revisions/master/show/plasma/python
Plasmoids that use the QML 2.0 declarative language to describe their user interface while having the logic of the applet, in JavaScript.
This is now the recommended method of creating plasmoids, where possible. The plasmoid, or applet serves as the visualization for the data which a Plasma::DataEngine contains.
It allows easily the declaring of an interface and to easily create things like ListViews with native Plasma theming. It is what Plasma is leaning the most towards, especially in the Mobile, MediaCenter shells.