====== Plasmoids mit QML erstellen ====== ===== Was sind Plasmoids? ===== Plasmoids sind Widgets die direkt auf der KDE-Oberfläche platziert werden können. Beispiele für Plasmoids sind ein Notizblock, Kalender und eine Anzeige der Festplattenbelegung. \\ {{:frameworks:qt:qml:hdd.png|Plasmoid zur Anzeige der Festplattenbelegung}} \\ \\ Neben QML können Plasmoids auch in [[cpp:start|C++]], [[js:start|JavaScript]], [[ruby:start|Ruby]] oder [[py:start|Python]] erstellt werden. ===== Voraussetzungen ===== Um Plasmoids mit QML erstellen werden mindestens KDE 4.6 und das Qt-SDK in der Version 4.7.1 vorausgesetzt. ===== Ordnerstruktur ===== Unterhalb des Anwendungsverzeichnisses befindet sich eine Datei ''metadata.desktop'', die allgemeine Informationen über das Plasmoid bereitstellt und ein Ordner ''content'', der den eigentlichen Code der Oberfläche (Ordner ''ui'') und dahzugehörige Daten (Ordner ''data'') enthält. Der Code wird üblicherweise über eine Datei ''main.qml'' ausgeführt. \\ Nochmals die Struktur: * helloworld * metadata.desktop * content * ui * main.qml * data * Daten ===== Metadaten ===== Ähnlich wie bei einem Debian-Paket, können auch bei Plasmoids Metadaten angegeben werden. Diese befinden sich in der Datei ''metadata.desktop''.\\ Folgende Variablen stehen zur Verfügung: ^ Variable ^ Bedeutung ^ | Encoding | Encoding des Textes | | Name | Name des Plasmoids | | Name[Sprache] | Name des Plasmoids in der angegebenen Sprache | | Type | | | ServiceTypes | | | Icon | Icon, das KDE für das Plasmoid anzeigt | | Comment | Kommentar | | X-Plasma-API | Sprache in der das Plasmoid geschrieben ist, für QML ist das ''declarativeappletscript'' | | X-Plasma-MainScript | Haupt-Skript des Plasmoids, üblicherweise ''ui/main.qml'' | | X-Plasma-DefaultSize | Standard-Größe des Plasmoids | | X-KDE-PluginInfo-Author | Name des Autors | | X-KDE-PluginInfo-Email | Mail-Addresse des Autors | | X-KDE-PluginInfo-Website | Website des Plasmoids/Autors | | X-KDE-PluginInfo-Category | Kategorie unter der das Plasmoid angezeigt wird | | X-KDE-PluginInfo-Name | Installationspfad: ''~/.kde/share/apps/plasma//'' | | X-KDE-PluginInfo-Version | Versionsnummer | | X-KDE-PluginInfo-Depends | Abhängigkeiten | | X-KDE-PluginInfo-License | Lizenz | | X-KDE-PluginInfo-EnabledByDefault | Falls ''true'', wird das Plasmoid von KDE in der Auswahl angezeigt | \\ Für unser Beispiel verwenden wir folgende Datei: [Desktop Entry] Encoding=UTF-8 Name=Hello World! Name[de]=Hallo Welt! Type=Service ServiceTypes=Plasma/Applet,Plasma/PopupApplet Icon=contents/data/proggen-logo.png Comment=A simple QML-plasmoid. X-Plasma-API=declarativeappletscript X-Plasma-MainScript=ui/main.qml X-Plasma-DefaultSize=200,100 X-KDE-PluginInfo-Author=Daniel Marth X-KDE-PluginInfo-Email X-KDE-PluginInfo-Website=https://proggen.org/ X-KDE-PluginInfo-Category=Examples X-KDE-PluginInfo-Name=org.proggen.helloworld X-KDE-PluginInfo-Version=0.1 X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL X-KDE-PluginInfo-EnabledByDefault=true \\ Das komplette Beispiel kann hier heruntergeladen werden: {{:frameworks:qt:qml:helloworld.zip|helloworld.zip}} ===== Installieren ===== Installiert kann das Plasmoid über den Befehl: \\ plasmapkg -i helloworld Wobei ''helloworld'' der Name jenes Ordners ist, der unser Plasmoid enthält. Die Deinstallation erfolgt ähnlich: \\ plasmapkg -r helloworld In diesem Fall steht der letzte Parameter jedoch für den Namen des Plasmoids, falls dieser vom Namen des Ordners abweicht. Eine Liste aller installierten Plasmoids kann ebenfalls abgefragt werden: plasmapkg -l Um sich das ständige neu Installieren während der Entwicklungsphase zu ersparen, kann auch ''plasmoidviewer'' verwendet werden: plasmoidviewer helloworld Mit dieser Methode können auch Fehlermeldungen ausgelesen werden. ===== Anzeigen ===== Über das Kontextmenü des KDE-Desktops kann nun der ''Add Widgets...''-Dialog aufgerufen werden, in diesem nun unser Plasmoid mit unserem Logo angezeigt wird. Eventuell müssen zuerst Widgets über das selbige Kontextmenü entsperrt werden. \\ {{:frameworks:qt:qml:addwidgets.png|}} \\ Nun kann das Plasmoid per Drag-And-Drop auf dem Desktop platziert werden. \\ {{:frameworks:qt:qml:plasmoid.png|}} \\ ===== KDevelop ===== ===== Beispiel: Notizblock =====