Caadi ahaan Linux waxaan ka maqanahay waxoogaa codsiyo ah, ama macaamiisha adeegyada qaar ka mid ah oo goor hore u soo baxa barnaamijyada kale, maxaa yeelay casharkaan waxaan ku arki doonaa sida loo abuuro macmiil (waxay noqon doontaa aragti fog oo ka sareysa), iyadoo la adeegsanayo REST API qiimo leh (iyo gtk 3).
API
Ma doonayo inaan sharaxo waxa uu yahay API, ama waxa loo yaqaan 'REST API' (waxaad ka heli kartaa macluumaad badan google), kaliya waxaan dhihi doonaa qiyaas ahaan waxaan sameyn doonaa codsiyo (GET ama POST) waana ku soo celi jawaabta qaabka JSON.
Casharrada waxaan go'aansaday inaan u adeegsado api-ka ay na siiso yaabina (fiiri dukumiintiyada api), oo na siinaya macluumaad taxane ah oo ku saabsan majaajillada, jilayaasha ...
Si aan u helno waxaan u baahanahay fure, oo aan ku heli karno diiwaangelinta, markii aan helno waxaan xaddidan nahay 3000 codsi.
Aan aragno tusaale API, si loogu yeero api-kan waa inaan isticmaalnaa furayaasheena (waxaan leenahay mid caam ah iyo mid gaar ah):
Si aan u aragno tusaalahan fudud waxaan adeegsan karnaa www.md5.net halka aan dhigno 1 "+" keyprivate "+" keypublic taasna waxay soo saartaa xashiishka, waan wici karnaa sida ay sawirka u dhigeyso. Waxaan heli doonaa jawaabta (kiiskan waa inaan aragno jilayaasha):
Waxaa jira barnaamijyo iyo waxyaabo loogu talagalay daalacayaasha oo fududeyn doona aragtida json:
Waan arki karnaa inay ina siineyso magaca, sharraxaadda, thumbnail (sawirka astaamaha) ...
Ku daweynta JSON vala (Parseando).
Mana sharxi doono waxa qaababku yihiin json, waxaad ka heli kartaa macluumaadka khadka tooska ah. Waxaan ka heli karnaa tusaale fudud oo lagu sameeyay Vala Halkan.
Ugu horreyntii waxaan rakibnaa maktabadda json-glib haddii ay dhacdo inaannaan rakibin:
sudo apt-hel ku rakib libjson-glib-1.0-0 libjson-glib-1.0-0-dev
Waxaan sidoo kale rakibi doonaa libsoup:
sudo apt-get rakibi libsoup-2.4 libsoup2.4-dev
Marka hore waxaan soo dejineynaa maktabadaha aan isticmaali doono:
adeegsiga Maraqa; adeegsiga Json; adeegsiga Gtk;
Diraya codsi:
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"; kalfadhiga var = Soup.SessionSync cusub (); farriin kala duwan = maraq cusub.Message ("GET", uri); fadhiga.send_message (fariin);
Urlku wuxuu na tusi doonaa ugu badnaan 10 majaajilo ah oo soo muuqday inta udhaxeysa 2 taariikho (00-03-2014, 16-03-2014).
Ugu horreyntii waxaan abuureynaa kalfadhi, ka dib waxaan dhisnaa codsiga nooca GET oo aan dirnaa.
Parseying json:
var root_object = parser.get_root () .get_object ();
wuxuu helaa sheyga ugu muhiimsan ie dhammaan koodhka json.
jawaab celin = root_object.get_object_member ("xogta"); natiijooyinka kala duwan = response.get_array_member ("natiijooyinka");
Waan qaban karnaa
Nidaaminta lambarka:
food (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 ("magac"), geoname.get_double_member ("sharaxaad")); }
Waxaad arki kartaa tusaalooyin Halkan.
Muujinta macluumaadka:
Halkan waxaan horeyba u galnay sida aan u jecelnahay sida loo soo bandhigo macluumaadka, si aan u soo dejino sawirrada aan u adeegsan karno habkan:
async joogto ah Gdk.Pixbuf? get_img (url string) {Gdk.Pixbuf? pix = null; var file = File.new_for_uri (url); iskuday {GLib.InputStream @input_stream = dhalinta file.read_async (Mudnaanta.DEFAULT, null); pix = dhaliya Gdk.Pixbuf.from_stream_at_scale_async cusub (input_stream, 800, 600, run, null); } qabasho (Cilad e) {digniin (e.message); } soo noqo pix; }
Ahaanshaha hab lagu fuliyo dun kale (asynchronous) markii aad soo waceyso waa inaan ku sameynaa sidan:
get_img.begin (img_url, (obj, res) => {var pix = get_img.end (res);});
Halkee img_url yahay url sawirka aan ka helno json.
Si loo soo ururiyo aremos:
valac --pkg gtk + -3.0 --pkg libsoup-2.4 --pkg json-glib-1.0 customername.vala
Talooyin
Qaar ka mid ah Talooyinka naga caawin kara abuuritaanka macmiilkeena / codsigeenna:
Qeexitaan
AppIndicator waa maktabad noo oggolaaneysa inaan barnaamijkeenna ka dhigno tilmaame qeybta sare (labadaba Elementary os iyo Ubuntu).
Ku rakibidda caddeyn 3-0.1
sudo apt-hel rakib libappindicator3-dev
Uruurinta:
valac --pkg gtk + -3.0 - qeexidappg3-0.1 barnaamijka.vala
Haddii ay dhacdo inaad qalad hesho, waxaa laga yaabaa inay tahay maxaa yeelay waxaad leedahay nooc cusub oo ah qeexeeyaha, haddii ay dhacdo tag / usr / share / vala / vapi waxaadna arki doontaa noocaagu.
Waxaan ka heli karnaa tusaale ah Websaydhka horumarinta Ubuntu.
Tusaale yar:
kala duwan tilmaame = Tusiyaha cusub ("win.title", "office-address-book", IndicatorCategory.APPLICATION_STATUS); tilmaame.set_status (IndicatorStatus.ACTIVE); var menu = cusub Gtk.Menu (); var item = cusub Gtk.MenuItem.with_label ("Ku dar xiriir cusub"); item.activate.connect (() => {//indicator.set_status(IndicatorStatus.ATTENTION); // CreateContact ();}); shey.sho (); menu.append (shey); shey = cusub Gtk.MenuItem.with_label ("Delete contact"); shey.sho (); item.activate.connect (() => {//indicator.set_status(IndicatorStatus.ATTENTION); // DeleteContact ();}); menu.append (shey); tilmaame.set_menu (menu);
Sawirro
Ku dhig astaan dalabkeena:
Waxaan ka bilaabaynaa dhisaha fasalka Gtk.Window:
iskuday {// Buugga sawirka ee this.icon = cusub Gdk.Pixbuf.from_file ("fcbb.png"); } qabashada (Error e) {stderr.printf ("error:% s \ n", e.message); }
Sawir fudud
Sawir fudud oo ku jira Vala oo aan ku dhejin karno tusaale ahaan qaabeynta.
sawir = cusub Gtk. Sawir (); image.set_from_file ("fcb.png");
Fikrad
U adeegso vala iyo gtk macaamiisha? maya, aragtidayda feker ahaan way kafiicantahay uguna fududaan in la isticmaalo c ++ iyo Qt (QML), waxay sugeysaa in la sameeyo maqaal macaamiil loogu sameeyo QML.
mahadsanid carnal 😀, waa wax aad u wanaagsan in la arko waxa "dhowr sadar oo koodh ah" ay sameyn karaan markaad aqoon leedahay. tusaaluhu wuxuu siinayaa fikrado badan waxyaabo kale 😀
Talooyin aad u wanaagsan, bro.
Eeg haddii aan samayn karo mid.