Mini Lernilo: Krei Appletojn por Cinamo

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

Cinamo_Apleto

Dosieroj, kiuj konsistigas nian Applet.

Cinamo_Apleto2

Ni plu difinas applet.js

kodo

applet.js

 

Nun ni vidu la kodon de applet.js kaj klarigu ĉiun el ĝiaj frazoj:

kodo de applet.js

aplika kodo

Ĝavaskripta kodo

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:

gjs-klaso

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

Z7qwRdp

 

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

LP0ol8b

 

Ekrankopio - 140314 - 21:11:34

"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

  lKxpdkS

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

nerd

Kunmetaĵo de nia apleto

beta

 

Ni plu difinas applet.js 

kodo

applet.js

Komencante la kodon applet.js

Ekrankopio - 140314 - 21:30:48

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.

beta

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

qt

Ni plu difinas metadata.json

LP0ol8b

Mongo

La kodo estas skribita same kiel la antaŭa ekzemplo

Applet-bildo kreita per Qt

kio

 

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.

megtk

Elŝutu la lernilon kaj ekzemplojn


La enhavo de la artikolo aliĝas al niaj principoj de redakcia etiko. Por raporti eraron alklaku Ĉi tie.

12 komentoj, lasu la viajn

Lasu vian komenton

Via retpoŝta adreso ne estos eldonita. Postulita kampojn estas markita per *

*

*

  1. Respondeculo pri la datumoj: Miguel Ángel Gatón
  2. Celo de la datumoj: Kontrola SPAM, administrado de komentoj.
  3. Legitimado: Via konsento
  4. Komunikado de la datumoj: La datumoj ne estos komunikitaj al triaj krom per laŭleĝa devo.
  5. Stokado de datumoj: Datumbazo gastigita de Occentus Networks (EU)
  6. Rajtoj: Iam ajn vi povas limigi, retrovi kaj forigi viajn informojn.

  1.   aiolia diris

    Interesa Artikolo ...

    1.    marianogaudix diris

      Dankon . Mia estas, ke ni lernas iomete ĉiutage.

  2.   Danie diris

    Tre bone, mi amas ĝin, mi ĉiam volis scii kiel ĉi tiaj apletoj estis faritaj

  3.   Anĝelo Araya diris

    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.

  4.   MSX diris

    Tre bona lernilo kaj ĉio alia, sed la grava afero, kiun vi ne metis: ĉu ligi al tapeto?

    1.    marianogaudix diris

      Elŝutu la fonbildojn Linukso Mint 16 Petra.
      La pakaĵo nomiĝas mint-backgrounds-petra: http://packages.linuxmint.com/list.php?release=Petra

  5.   Teslo diris

    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!

  6.   Matiaso diris

    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.

  7.   matiasbatero17 diris

    Nu, Marian, mi ne sciis, ke vi afiŝas ĉi tie. Salutojn.

    1.    marianogaudix diris

      Dum vi marŝas, Matute ... .. Mi ĉiam ĉirkaŭiras ĉi tiujn partojn. Saluton

  8.   lolbimbo diris

    Bona artikolo.

  9.   honovan diris

    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.