Ukwakha Amaklayenti [iVala ne-Gtk 3]

Imvamisa kuLinux siphuthelwa izinhlelo zokusebenza ezimbalwa, noma amaklayenti ezinye izinsiza eziphuma kusenesikhathi kwamanye amapulatifomu, ngoba kulesi sifundo sizobona ukuthi lakhiwa kanjani iklayenti (kuzoba umbono kude ngenhla), ngokusebenzisa i-REST I-API enenani (ne-gtk 3).

API

Ngeke ngichaze ukuthi yini i-API, noma ukuthi i-REST API iyini (ungathola imininingwane eminingi ku-google), ngizosho nje ukuthi cishe sizokwenza ezinye izicelo (GET noma POST) futhi kuzoba buyisela impendulo ngefomethi ye-JSON.

Okokufundisa nginqume ukusebenzisa i-api elisinikeza yona Marvel (bona imibhalo ye-api), esihlinzeka ngochungechunge lwemininingwane mayelana namahlaya, abalingiswa ...

Ukuyithola sidinga ukhiye, esingawuthola ngokubhalisa, uma sesitholile sinomkhawulo wezicelo ezingama-3000.

Ake sibheke isibonelo se-API, ukubiza le api kufanele sisebenzise okhiye bethu (sinesidlangalaleni nesizimele):

m

Ukubona lesi sibonelo esilula esingasisebenzisa www.md5.net lapho sibeka khona ikhiphedi engu-1 "+" yekhiphedi "+" futhi edala i-hashi, singabiza njengoba ibeka isithombe. Sizothola impendulo (kulokhu ukubona abalingiswa):

kunephutha emfanekisweni ucingo luzoba http://gateway.marvel.com/v1/umphakathi/ amahlaya ...

mm

Kunezinhlelo nama-plugins weziphequluli ezizosiza ukubuka kwe-json:

m1

Siyabona ukuthi isinika igama, incazelo, isithonjana (isithombe somlingiswa) ...

ukuthuthukiswa kwewebhu okumangazayo

Ukwelapha i-JSON nge-vala (Parseando).

Futhi ngeke ngichaze ukuthi amafomethi ayini json, ungathola imininingwane online. Singathola isibonelo esilula esenziwe eVala lapha.

Okokuqala sifaka umtapo wezincwadi we-json-glib uma kwenzeka singenawo ofakiwe:

Sudo apt-get ukufaka libjson-glib-1.0-0 libjson-glib-1.0-0-dev

Sizofaka futhi i-libsoup:

sudo apt-get ukufaka libsoup-2.4 libsoup2.4-dev
Ngeke ngibeke ukhiye womphakathi noma i-hash kuzicelo

Okokuqala singenisa imitapo yolwazi esizoyisebenzisa:

ukusebenzisa iSobho; usebenzisa uJson; usebenzisa i-Gtk;

Ukuthumela isicelo:

var uri = "http://gateway.marvel.com/v1/public/comics?dateRange=2014-16-03%2C2014-16-03&orderBy=-onsaleDate&limit=10&ts=1&apikey=123&hash=555224458"; var iseshini = iSobho elisha.SessionSync (); var message = new Soup.Message ("GET", uri); isikhathi.send_message (umyalezo);

I-url izosikhombisa ubuningi bamahlaya ayi-10 aphume phakathi kwezinsuku ezi-2 (00-03-2014, 16-03-2014).
Okokuqala senza iseshini, bese sakha isicelo sohlobo lwe-GET bese siyasithumela.

Ukuhlwaya ujson:

var root_object = umhleli.get_root () .get_object ();

ithola into esemqoka okungukuthi yonke ikhodi ye-json.

var response = root_object.get_object_member ("idatha"); var results = response.get_array_member ("imiphumela");

Singabamba

Cubungula ikhodi:

i-foreach (var geonode in results.get_elements ()) {var geoname = geonode.get_object (); stdout.printf ("% f \ n% s \ n% s \ n \ n", geoname.get_string_member ("id"), geoname.get_string_member ("igama"), geoname.get_double_member ("incazelo")); }

Ungabona izibonelo lapha.

Ukubonisa imininingwane:

Lapha sesivele singena ekuthandeni kwethu ukubonisa imininingwane, ukulanda izithombe esingasebenzisa le ndlela:

i-public static async Gdk.Pixbuf? get_img (intambo ye-url) {Gdk.Pixbuf? i-pix = ayisebenzi; var file = File.new_for_uri (url); zama i- {GLib.InputStream @input_stream = yield file.read_async (Priority.DEFAULT, null); i-pix = isivuno esisha se-Gdk.Pixbuf.from_stream_at_scale_async (okokufaka_ukufaka, 800, 600, kuyiqiniso, akunalutho); } bamba (Iphutha e) {isexwayiso (e. umyalezo); } buyisela i-pix; }

Ukuba yindlela esetshenziswa komunye umucu (asynchronous) lapho uyibiza kufanele siyenze ngale ndlela:

get_img.begin (img_url, (obj, res) => {var pix = get_img.end (res);});

Lapho i-img_url eyi-url yesithombe esiyithola ku-json.

Ukuhlanganisa ama-aremos:

i-valac --pkg gtk + -3.0 --pkg libsoup-2.4 --pkg json-glib-1.0 igama lomsebenzisi.vala
Singathola imibhalo ye-json-glib lapha.

Amathiphu

Amanye amathiphu angasisiza ukuthi sakhe amaklayenti / uhlelo lwethu lokusebenza:

AppIndicator

I-AppIndicator ilabhulali esivumela ukuthi sibeke uhlelo lwethu njengenkomba kuphaneli ephezulu (kokubili ku-Elementary os naku-Ubuntu).

Ukufaka i-appindicator3-0.1

sudo apt-get ukufaka libappindicator3-dev

Kuyahlanganiswa:

I-valac --pkg gtk + -3.0 --pkg isichazamazwi3-0.1 uhlelo.vala

Uma kwenzeka uthola iphutha, kungenzeka ukuthi ngenxa yokuthi unenguqulo entsha ye-appindicator, uma kunjalo iya ku / usr / share / vala / vapi bese uzobona ukuthi iyiphi inguqulo yakho.

Ukuthathwa kusuka ngo-2014-02-23 15:30:57

Singathola isibonelo ku- Iwebhusayithi yokuthuthukisa Ubuntu.

Isibonelo esincane:

Ukuthathwa kusuka ngo-2014-02-23 17:04:52

var indicator = new Indicator ("win.title", "office-address-book", IndicatorCategory.APPLICATION_STATUS); inkomba.set_status (IsikhombiStatus.ACTIVE); var imenyu = entsha Gtk.Menu (); var item = new Gtk.MenuItem.with_label ("Faka oxhumana naye omusha"); into.activate.connect (() => {//indicator.set_status(IndicatorStatus.ATTENTION); // CreateContact ();}); into.show (); imenyu.append (into); item = new Gtk.MenuItem.with_label ("Susa oxhumana naye"); into.show (); into.activate.connect (() => {//indicator.set_status(IndicatorStatus.ATTENTION); // DeleteContact ();}); imenyu.append (into); inkomba.set_menu (imenyu);

Izithombe

Faka isithonjana kuhlelo lwethu lokusebenza:

Siqala kusuka kumakhi wesigaba se-Gtk.Window:

zama isiqondisi se- {// Image this.icon = new Gdk.Pixbuf.from_file ("fcbb.png"); } bamba (Iphutha e) {stderr.printf ("iphutha:% s \ n", e.message); }

Ukuthathwa kusuka ngo-2014-02-23 15:44:00

Isithombe esilula

Isithombe esilula ku-vala esingasibeka ngokwesibonelo kusakhiwo.

isithombe = iGtk.Image entsha (); isithombe.set_from_file ("fcb.png");

FCB

Umbono

Sebenzisa i-vala ne-gtk kumakhasimende? cha, ngokombono wami kungcono kakhulu futhi kulula ukusebenzisa i-c ++ ne-Qt (QML), kulindwe ukwenza i-athikili yokwenza amaklayenti ku-QML.


Shiya umbono wakho

Ikheli lakho le ngeke ishicilelwe. Ezidingekayo ibhalwe nge *

*

*

  1. Ubhekele imininingwane: Miguel Ángel Gatón
  2. Inhloso yedatha: Lawula Ugaxekile, ukuphathwa kwamazwana.
  3. Ukusemthethweni: Imvume yakho
  4. Ukuxhumana kwemininingwane: Imininingwane ngeke idluliselwe kubantu besithathu ngaphandle kwesibopho esisemthethweni.
  5. Isitoreji sedatha: Idatabase ebanjwe yi-Occentus Networks (EU)
  6. Amalungelo: Nganoma yisiphi isikhathi ungakhawulela, uthole futhi ususe imininingwane yakho.

  1.   Marcos kusho

    ngiyabonga ngokwenyama 😀, kuhle ukubona ukuthi yini ongayenza "imigqa embalwa yekhodi" uma unolwazi. isibonelo sinikeza imibono eminingi yezinye izinto 😀

  2.   eliotime3000 kusho

    Izeluleko ezinhle kakhulu, bhuti.

    Bona ukuthi ngingenza yini eyodwa.