Mini Tutorial: Lumilikha ng mga Applet para sa Cinnamon

Lilikha kami ng isang simpleng applet para sa kanela. Upang magsimula, dapat nating malaman iyon kanela nag-aalok ng iba't ibang mga uri ng applet:

  • TextApplet (ipinapakita ang isang label sa panel)
  • IconApplet (ipinapakita ang isang icon sa panel)
  • TextIconApplet (na nagpapahiwatig ng parehong isang icon at isang label sa panel)
  • applet (para sa mga hardcore developer, na nagpapakita ng walang laman na kahon na maaari mong punan ang iyong sarili)

Sa tutorial na ito, nais lamang naming magpakita ng isang icon sa panel, kaya gagamit kami ng isang "IconApplet". Upang mai-program ang aming applet sa Kanela o Gnome kailangan nating malaman at malaman ang tungkol sa programang Javascript

Lokasyon ng aming code.

Una, tingnan natin ang lokasyon ng aming file. Ang lokasyon ng aming applet ay ibinibigay sa mga sumusunod na address:

/.local/share/cinnamon/applets o en /usr/share/cinnamon/applets

Cinnamon_Applet

Mga file na bumubuo sa aming Applet.

Cinnamon_Applet2

Nagpapatuloy kami upang tukuyin ang applet.js

code

applet.js

Ngayon ay magpatuloy tayo upang makita ang code ng applet.js at ipaliwanag ang bawat isa sa mga pangungusap na ito:

pagsisimula ng applet.js code

applet code

javascript code

Tingnan natin ang bawat isa sa mga pangungusap ng aming nakaraang code

const Lang = imports.lang; / * Inanyayahan namin ang mga aklatan ng Gtk at Lang, ang mga ito ay pangunahing bahagi ng anumang aplikasyon ng GNOME, pinapayagan kaming lumikha ng mga bintana, widget at maiugnay ang mga ito. * / Const Applet = imports.ui.applet; / * Inanyayahan namin ang library ng Applet na nagpapahintulot sa amin na lumikha ng isang applet para sa Cinnamon at Gnome at sa parehong oras ay binibigyan kami ng mga katangian at pag-andar nito. * / Const GLib = imports.gi.GLib; / * Ang GLib ay isang library ng helper, pinapayagan kaming gumawa ng mga bagay sa GNOME, halimbawa sabihin kung saan ang hellognome.html file ay, ito ang library na namamahala sa mga signal. * / Const Gettext = imports.gettext.domain ('kanela -applets '); const _ = Gettext.gettext; // Gettext library na nagbibigay-daan sa amin upang mai-import ang mga katangian ng desktop ng Cinnamon. const PopupMenu = imports.ui.popupMenu; / * Ang PopupMenu ay isang silid-aklatan upang magamit ang menu manager, pinapayagan kaming tawagan ang popup-menu widget na karaniwang ginagamit sa mga applet. * / Function MyApplet (orientation) {this._init (orientation); }

Ang tagapagbuo ng aming applet ay tinukoy sa ibaba, tingnan natin ang aming Klase o Klase:

gjs klase

Nagpapatuloy kami sa kahulugan ng bawat isa sa mga pangungusap

MyApplet.prototype = {__proto__: Applet.IconApplet.prototype, // Tinutukoy namin ang aming Class o Class _init: function (orientation) {Applet.IconApplet.prototype._init.call (ito, orientation); / * Itinakda namin ang oryentasyon sa pamamagitan ng Cinnamon. Itinakda namin kung ang panel ng applet ay nasa itaas o sa ibaba (may epekto ito sa orientation ng mga menu ng applet). * / Subukang {// Gumawa ng isang bagay} Makibalita (e) {// Ano ang mangyayari kung may mangyari na isang error } / * Gumagamit kami ng isang pagsubok / catch upang mahuli ang anumang mga error na maaaring mangyari sa aming applet at upang matiyak na nakasulat ang mga ito sa pandaigdigang log ng error. Sa ganitong paraan, kung may mali, maaari mong makita ang error sa Naghahanap ng Salamin: Pindutin ang Alt F2, i-type ang "lg" at mag-click sa tab na "mga error". * / This.menuManager = bagong PopupMenu.PopupMenuManager (ito); // Lumikha ng popup-menu at itakda ang menu manager this.menu = bagong Applet.AppletPopupMenu (ito, orientation); // lumilikha kami ng isang menu. this.menuManager.addMenu (this.menu); // Idinagdag namin ang menu sa popup-menu. this.makeMenu (); // menuitem makeMenu, lumilikha kami ng isang menuitem na tinatawag na makeMenu. ito. buildContextMenu (); // buildContextMenu, gumawa kami ng isang menuitem na tinatawag na buildContextMenu. this.set_applet_icon_name ("folder"); / * Lumilikha kami ng applet, ang kasong ito ay natatangi, ang napiling icon ay ang folder o folder, maaari rin kaming magtaguyod ng isang text applet kung nais namin. * /

Bilang isang halimbawa baguhin ang pangalan ng "folder" sa "terminal", "docky" upang magtaguyod ng mga bagong pangalan tingnan ang pangalan ng mga icon ng Gnome o Cinnamon o anumang iba pang tema ng icon, pumunta sa address.

/usr/share/icons

Z7qwRdp

this.set_applet_tooltip (_ ("Mag-click dito upang pumatay ng isang window")); // Catch upang mahuli ang anumang mga error na maaaring mangyari sa aming applet. mahuli (e) {global.logError (e); } makeMenu: function () {this.menu.addMenuItem (bagong PopupMenu.PopupMenuItem ("Mensahe sa Pagsubok", {reaktibo: totoo})); }, / * Tinutukoy namin ang pangalan ng makeMenu menuitem at mga katangian nito. Sa kasong ito, ang tatak ay Mensahe ng Pagsubok ". Tutukuyin namin ang {reaktibo: totoo} Itinatag namin na ang background ng menuitem ay magbabago kapag ang pointer ay dumaan sa menuitem sa pamamagitan ng totoo kung ito ay hindi totoo ang kabaligtaran ang nangyari. () {this.menu .addMenuItem (bagong PopupMenu.PopupMenuItem ("show", {reactive: true}));}, // Tinukoy namin ang pangalan ng makeMenu menuitem at mga katangian nito. Sa kasong ito ang label ay "show ". on_applet_clicked: function (event) {this.menu.toggle ();} // Signal emitted by the applet, to call the popup-menu function main (metadata, orientation) {let myApplet = new MyApplet (orientation); return myApplet;} / * Panghuli, kailangan lang naming magdagdag ng isang "pangunahing" function, na malamang na pareho sa bawat applet, lumilikha ito ng isang halimbawa ng aming applet at ibabalik ito sa Cinnamon. * / // Isara ang pagbalik ng loop myApplet;

Nagpapatuloy kami upang tukuyin ang metadata.json

LP0ol8b

Screenshot - 140314 - 21:11:34

"huling na-edit": "1331990905", // Huling edisyon. "description": "Mag-click sa applet upang maipakita ang isang pasadyang tinukoy na menu ng gtk", // Paglalarawan ng applet. "icon": "docky", // Mga icon na ginamit para sa paglalarawan ng applet. Bilang isang halimbawa palitan ang pangalan ng "docky" sa "terminal", "folder". "uuid": "black" // Folder kung saan kasama ang aming metadata.json file na "pangalan": "Pasadyang gtk menu" // Pangalan ng applet.

Tandaan: Upang magtakda ng mga bagong pangalan tingnan ang pangalan ng mga icon ng Gnome o Cinnamon o anumang iba pang tema ng icon, pumunta sa address ng mga file system.

/usr/share/icons

Larawan ng nilikha na Applet

  lKxpdkS

Ang Qt, Gtk, Vala at iba pang mga wikang ginamit upang lumikha ng isang applet para sa Cinnamon o Gnome

Tingnan natin ang lokasyon ng aming applet para sa Cinnamon

Ang lokasyon ng aming applet ay ibinibigay sa mga sumusunod na address:

/.local/share/cinnamon/applets

o en

/usr/share/cinnamon/applets

nerd

Komposisyon ng aming applet

beta

Nagpapatuloy kami upang tukuyin ang applet.js 

code

applet.js

Simula ng applet.js code

Screenshot - 140314 - 21:30:48

Pagtatapos ng applet.js

Ngayon ay magpatuloy tayong makita ang applet.js code at ipaliwanag ang mga pahayag nito.

Ang code na nakasulat ay halos kapareho ng nakaraang halimbawa na nakasulat sa Javascript.
Ang signal lamang ang nabago, na tatawag sa aming auto-executable.

on_applet_clicked: function (event) {GLib.spawn_command_line_async (GLib.get_home_dir () + '/.local/share/cinnamon/applets/Qt4/Qtmenu/Menu'); }

Ang aming awtomatikong naisasagawa ay maaaring nakasulat sa Qt, Gtk, Gtkmm, wxWidget, Vala, atbp. mga wikang maaaring malikha ng self-executable. Ang aming auto-executable ay tinatawag na Menu at nasa folder ito ng Qtmenu.

beta

Maaari din naming gamitin ang iba pang mga wika sa pagprograma na may mga bindings para sa Gtk tulad ng kaso ng PyGTK, Ruby Gtk, Perl Gtk, atbp. na maaaring magamit gamit ang isang script upang maipatupad ang code na nakasulat sa mga wikang iyon. Ang prinsipyo ay palaging pareho upang tumawag sa mga programa, lumikha ng popup-menu at popup-window ayon sa aming mga pangangailangan.

Tingnan natin ang code ng aming auto-executable na nakasulat sa Qt

qt

Nagpapatuloy kami upang tukuyin ang metadata.json

LP0ol8b

mongo

Ang code ay nakasulat sa parehong paraan tulad ng nakaraang halimbawa

Ang imahe ng applet ay nilikha kasama ang Qt

Ano

Ang imahe ng Applet nilikha gamit ang Gtk 3.10

Iniwan ko sa iyo ang isang maliit na halimbawa ng isang applet na gumagamit ng isang maipapatupad na nakasulat sa Gtk, sa kasong ito kinukuha namin ang myGtkMenu menu na ginamit sa OpenBox.

Ito ay isang menu na nagpapatupad ng sarili.

megtk

I-download ang tutorial at mga halimbawa


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   aiolia dijo

    Kagiliw-giliw na Artikulo ...

    1.    marianogaudix dijo

      Salamat . Aking ay na natutunan namin ng kaunti araw-araw.

  2.   Danie dijo

    Napakahusay, gusto ko ito, palagi kong nais na malaman kung paano ginawa ang mga ganitong uri ng applet

  3.   Angel Araya dijo

    Isang maliit na pagwawasto. Ang Gettext ay walang tukoy sa Cinnamon tulad ng sinasabi nito sa artikulo, ito ay isang silid-aklatan na ginagawang posible ang mga awtomatikong pagsasalin at mula sa mga template.

  4.   msx dijo

    Napakahusay ng tutorial at lahat ng iyon ngunit ang mahalagang bagay na hindi mo inilagay: link sa wallpaper?

    1.    marianogaudix dijo

      I-download ang mga wallpaper ng Linux Mint 16 Petra.
      Ang pakete ay tinatawag na mint-backgrounds-petra: http://packages.linuxmint.com/list.php?release=Petra

  5.   Tesla dijo

    Napakainteresyong artikulo. Ang totoo ay palagi kong naisip kung paano nilikha ang mga applet na ito. Marahil ay hinihimok ako na lumikha ng isang mini-player applet para sa MPD o katulad na bagay.

    Salamat sa pagbabahagi!

  6.   Matias dijo

    Mahusay, inaalam ko lang kung paano baguhin ang cinnamon nm-applet (network manager), upang magbago ang kulay kapag wala akong access sa internet, (mayroon akong wifi card), at makakatulong ito sa akin na mai-orient ang aking sarili konti.

  7.   matiasbatero17 dijo

    Well doon Marian, hindi ko alam na nag-post ka dito. Pagbati.

    1.    marianogaudix dijo

      Habang naglalakad ka, Matute… .. Palagi akong naglalakad sa mga bahaging ito. Cheers

  8.   lolbimbo dijo

    Magandang artikulo

  9.   honovan dijo

    ang file na hindi nahanap ay na-deactivate dahil sa paglabag sa copyright.

    Ang ibig kong sabihin ay kung mayroon ka doon, maaari mo ba itong i-upload muli ???. Mangyaring.

    Salamat.