Ni kreos simplan aplikaĵon por Cinamo. Por komenci, ni devas scii tion Cinamo ofertas diversajn tipojn de aplikaĵoj:
- TextApplet (montrante etikedon sur la panelo)
- IconApplet (montrante ikonon sur la panelo)
- TextIconApplet (indikante kaj ikonon kaj etikedon sur la panelo)
- Apleto (por ĝisostaj programistoj, kiuj montras malplenan skatolon, kiun vi povas plenigi mem)
En ĉi tiu lernilo, ni simple volas montri ikonon sur la panelo, do ni uzos "IconApplet". Por programi nian aplikaĵon al Cinamo aŭ Gnomo ni bezonas scii kaj scii ion pri Ĝavaskripta programado
Loko de nia kodo.
Unue ni rigardu la lokon de nia dosiero. La loko de nia apleto estas donita ĉe la jenaj adresoj:
/.local/share/cinnamon/applets
aŭ en /usr/share/cinnamon/applets
Dosieroj, kiuj konsistigas nian Applet.
Ni plu difinas applet.js
Nun ni vidu la kodon de applet.js kaj klarigu ĉiun el ĝiaj frazoj:
kodo de applet.js
Ni vidu ĉiun el la frazoj de nia antaŭa kodo
const Lang = imports.lang; / * Ni alvokas la bibliotekojn Gtk kaj Lang, ili estas baza parto de iu GNOME-aplikaĵo, ili permesas al ni krei fenestrojn, fenestraĵojn kaj ligi ilin. * / Const Applet = imports.ui.applet; / * Ni alvokas la Applet-bibliotekon, kiu permesas al ni krei appleton por Cinamo kaj Gnome kaj samtempe donas al ni ĝiajn ecojn kaj funkciojn. * / Const GLib = imports.gi.GLib; / * GLib estas helpbiblioteko, ĝi permesas al ni fari aferojn en GNOME, ekzemple diru kie estas la dosiero hellognome.html, ĝi estas la biblioteko zorge de signaloj. * / Const Gettext = imports.gettext.domain ('cinnamon -platoj '); const _ = Gettext.gettext; // Gettext-biblioteko, kiu permesas al ni importi niajn proprajn karakterizaĵojn por la labortablo Cinnamon. const PopupMenu = imports.ui.popupMenu; / * PopupMenu estas biblioteko por uzi la administrilon de menuoj, ĝi permesas al ni alvoki la ŝprucmenuan fenestraĵon kutime uzatan en aplikaĵoj. * / Funkcio MyAplet (orientiĝo) {this._init (orientiĝo); }
La konstruilo de nia apleto estas difinita sube, ni rigardu nian Klason aŭ Klason:
Ni daŭrigas per la difino de ĉiu el la frazoj
MyApplet.prototype = {__proto__: Applet.IconApplet.prototype, // Ni difinas nian Class aŭ Class _init: funkcio (orientiĝo) {Applet.IconApplet.prototype._init.call (ĉi tiu, orientiĝo); / * Ni starigas la orientiĝon per Cinamo. Ni difinas ĉu la aplika panelo estas supre aŭ malsupre (ĉi tio efikas sur la orientiĝo de la menuoj de la aplikaĵo). * / Provu {// Faru ion} Kaptu (e) {// Kio okazas se okazas eraro } / * Ni uzas try / catch por kapti iujn ajn erarojn, kiuj povas okazi en nia apleto kaj por certigi, ke ĝi estas skribita al la tutmonda erara registro. Tiel, se io fiaskas, vi povas vidi la eraron en Spegulo: Premu Alt F2, tajpu "lg" kaj alklaku la langeton "eraroj". * / This.menuManager = nova PopupMenu.PopupMenuManager (ĉi); // Kreu la ŝprucfenestran menuon kaj agordu la menuomanaĝeron this.menu = new Applet.AppletPopupMenu (this, orientation); // ni kreas menuon. ĉi.menuManager.addMenu (ĉi.menu); // Ni aldonas la menuon al la ŝprucmenuo. ĉi tio.fariMenu (); // menuitem makeMenu, ni kreas menuitem nomitan makeMenu. ĉi.buildContextMenu (); // buildContextMenu, ni kreas menuon nomitan buildContextMenu. ĉi.set_applet_icon_name ("dosierujo"); / * Ni kreas la apleton, ĉi tiu kazo estas unika, la piktogramo elektita estas la dosierujo aŭ dosierujo, ni ankaŭ povas establi tekstan apleton, se ni volas. * /
Ekzemple ŝanĝu la nomon de "dosierujo" al "terminalo", "docky" por establi novajn nomojn vidu la nomon de la ikonoj Gnome aŭ Cinamo aŭ iu ajn alia ikona temo, iru en la adreson.
/usr/share/icons
this.set_applet_tooltip (_ ("Alklaku ĉi tie por mortigi fenestron")); // Kaptu por kapti iujn ajn erarojn, kiuj povas okazi en nia apleto. kapti (e) {global.logError (e); } makeMenu: function () {this.menu.addMenuItem (new PopupMenu.PopupMenuItem ("Test Message", {reactive: true})); }, / * Ni difinas la nomon de la menuo makeMenu kaj ĝiajn karakterizaĵojn. En ĉi tiu kazo la etikedo estas Testa Mesaĝo ". Ni difinos {reactive: true} Ni konstatas, ke la fono de la menuo ŝanĝiĝos kiam la montrilo trapasos la menuon tra vera, se ĝi estas falsa, male okazas. * / BuildContextMenu: function () {this.menu .addMenuItem (nova PopupMenu.PopupMenuItem ("show", {reactive: true}));}, // Ni difinas la nomon de la menuo makeMenu kaj ĝiajn karakterizaĵojn. En ĉi tiu kazo la etikedo estas "show" ". on_applet_clicked: function (event) {this.menu.toggle ();} // Signalo elsendita de la apleto, por voki la ĉefmenuan funkcion ĉefa (metadatenoj, orientiĝo) {lasu myApplet = nova MyAplet (orientiĝo); revenu myApplet;} / * Fine, ni nur devas aldoni "ĉefan" funkcion, kiu probable estos la sama en ĉiu apleto, ekzemplero de nia apleto estas kreita kaj redonita al Cinamo. * / // Ni fermas la buklan revenon miaApleto;
Ni plu difinas metadata.json
"last-edited": "1331990905", // Lasta eldono. "description": "Alklaku la apleton por montri laŭmendan persone difinitan gtk-menuon", // Applet description. "icon": "docky", // Ikonoj uzataj por la aplika priskribo. Ekzemple ŝanĝu la nomon de "docky" al "terminalo", "dosierujo". "uuid": "nigra" // Dosierujo kie nia metadata.json-dosiero estas inkluzivita "name": "Propra gtk-menuo" // Nomo de la apleto.
Noto: Por agordi novajn nomojn, vidu la nomon de la ikonoj Gnome aŭ Cinnamon aŭ iun ajn alian piktogramon, iru al la dosiersistema adreso.
/usr/share/icons
Bildo de kreita Applet
Qt, Gtk, Vala kaj aliaj lingvoj uzataj por krei apleton por Cinamo aŭ Gnomo
Ni vidu la lokon de nia apleto por Cinamo
La loko de nia apleto estas donita ĉe la jenaj adresoj:
/.local/share/cinnamon/applets
aŭ en
/usr/share/cinnamon/applets
Kunmetaĵo de nia apleto
Ni plu difinas applet.js
Komencante la kodon applet.js
Fino de applet.js
Nun ni daŭrigu vidi la kodon applet.js kaj klarigu ĝiajn asertojn.
La kodo skribita estas preskaŭ la sama kiel la antaŭa ekzemplo skribita per Ĝavaskripto.
Nur la signalo estis ŝanĝita, kiu nomos nian aŭtomate efektivigeblan.
on_applet_clicked: funkcio (evento) {GLib.spawn_command_line_async (GLib.get_home_dir () + '/.local/share/cinnamon/applets/Qt4/Qtmenu/Menu'); }
Nia aŭtomate plenumebla povas esti skribita per Qt, Gtk, Gtkmm, wxWidget, Vala, ktp. lingvoj per kiuj memkureblaj estas kreeblaj. Nia aŭtomate plenumebla nomiĝas Menuo kaj ĝi estas en la dosierujo Qtmenu.
Ni ankaŭ povas uzi aliajn programlingvojn, kiuj havas ligojn por Gtk, ekzemple PyGTK, Ruby Gtk, Perl Gtk, ktp. kiu povas esti uzata per skripto por ekzekuti la kodon skribitan en tiuj lingvoj. La principo ĉiam samas por voki programojn, krei ŝprucmenuon kaj ŝprucfenestron laŭ niaj bezonoj.
Ni vidu la kodon de nia aŭtomate efektivigebla skribita per Qt
Ni plu difinas metadata.json
La kodo estas skribita same kiel la antaŭa ekzemplo
Applet-bildo kreita per Qt
Bildo de la Applet kreita per Gtk 3.10
Mi lasas al vi malgrandan ekzemplon de apleto, kiu uzas efektivigeblan skribitan en Gtk, ĉi-kaze ni prenas la menuon myGtkMenu uzatan en OpenBox.
Ĝi estas memekzekuta menuo.
Elŝutu la lernilon kaj ekzemplojn
12 komentoj, lasu la viajn
Interesa Artikolo ...
Dankon . Mia estas, ke ni lernas iomete ĉiutage.
Tre bone, mi amas ĝin, mi ĉiam volis scii kiel ĉi tiaj apletoj estis faritaj
Malgranda korekto. Gettext estas nenio specifa por Cinamo kiel ĝi diras en la artikolo, ĝi estas biblioteko, kiu ebligas aŭtomatajn tradukojn kaj de ŝablonoj.
Tre bona lernilo kaj ĉio alia, sed la grava afero, kiun vi ne metis: ĉu ligi al tapeto?
Elŝutu la fonbildojn Linukso Mint 16 Petra.
La pakaĵo nomiĝas mint-backgrounds-petra: http://packages.linuxmint.com/list.php?release=Petra
Tre interesa artikolo. La vero estas, ke mi ĉiam scivolis, kiel kreiĝis ĉi tiuj aplikaĵoj. Eble mi estus kuraĝigita krei mini-ludilan aplikaĵon por MPD aŭ io simila.
Dankon pro dividado!
Bonege, mi nur eltrovas kiel modifi la cinamon nm-applet (retmanaĝero), por ke ĝi ŝanĝu koloron kiam mi ne havas interretan aliron, (mi havas wifi-karton), kaj tio helpas min orientiĝi iom.
Nu, Marian, mi ne sciis, ke vi afiŝas ĉi tie. Salutojn.
Dum vi marŝas, Matute ... .. Mi ĉiam ĉirkaŭiras ĉi tiujn partojn. Saluton
Bona artikolo.
dosiero ne trovita estis malaktivigita pro kopirajta malobservo.
Mi volas diri, ke se vi havas ĝin tie, ĉu vi povas alŝuti ĝin denove ???
Dankon.