Post la unua afiŝo Mi legis komenton, ke estus pli bone komenci per io pli kompleksa ol "salutmondo", tiam mi faros sekvencon (3 aŭ 4) afiŝu kreante simplan aplikaĵon (kun vala + gtk 3).
La apliko konsistos el simpla plurelekta demando kaj respondludo (tipo Trivia), en kiu respondi 3 demandojn malĝuste finiĝas (finita ludo), kaj la celo estas respondi kiel eble plej multajn demandojn, por ĉiu demando vi havas limigitan tempon. respondi.
Dezajno
Ĉefa projektado de nia kandidatiĝo estos:
Poste ni metos iujn butonojn, kiuj donos al ni la eblon de 50% (forigante du malĝustajn respondojn), frostigi tempon, pasigi demandon. Ĉiuj el ili povas esti uzataj nur unufoje, estante malebligitaj unufoje uzataj.
Desegni a Kodo
Kiel ni povas vidi en la dezajno, ni povas vidi la gtk-elementojn, kiujn ni uzos:
Respondoj -> Butono.
Demando -> Etikedo.
Tempo -> ProgressBar.
Malĝustaj / ĝustaj punktoj kaj Demandoj -> Etikedo.
Ni povas vidi, ke ni havas vertikalan strukturon, tial ni povas uzi GBox vertikale.
Kodo
int main (string [] args) {Gtk.init (ref args); var fenestro = nova Gtk.Window (); window.title = "programo"; window.window_position = Gtk.WindowPosition.CENTER; window.set_default_size (300, 340); window.destroy.connect (Gtk.main_quit); fenestro.set_border_width (10); // vertikala skatolo var skatolo = nova Gtk.Box (Gtk.Orientation.VERTICAL, 0); skatolo.set_spacing (10); // Etikedo por la demando var demando = nova Gtk.Label ("Ĉu demando?"); // tempoprograma var var time_bar = nova Gtk.ProgressBar (); timebar.set_text ("Tempo"); time_bar.set_show_text (vera); // Respondaj butonoj var response1 = nova Gtk.Button.with_label ("Respondo 1"); var respondo2 = nova Gtk.Button.with_label ("Respondo 2"); var resposta3 = nova Gtk.Button.with_label ("Respondo 3"); var respondo4 = nova Gtk.Button.with_label ("Respondo 4"); // etikedas info var-punktojn = nova Gtk.Label ("Punktoj: 0"); skatolo.pack_start (demando); skatolo.pack_start (tempo_stango); skatolo.pack_start (respondo1); skatolo.pack_start (respondo2); skatolo.pack_start (resposta3); skatolo.pack_start (resposta4); skatolo.pack_start (punktoj); fenestro.add (skatolo); window.show_all (); Gtk.main (); redonu 0;}
Por movi la "tempon" ni uzas GLib.Timeout kie ĉiun 500 milisekundojn ĝi estos aktivigita (ĝi estas buklo kie la variablo kiu enhavas la valoron de nia stango pliiĝos)
GLib.Timeout.add (500, () => {// Akiru la aktualan progreson: // (0.0 -> 0%; 1.0 -> 100%) duobla progreso = time_bar.get_fraction (); // Ĝisdatigu la stangon: progreso = progreso + 0.01; time_bar.set_fraction (progreso); // Ripetu ĝis 100% redonas progreson <1.0;});
Interesaj ligoj
http://www.valadoc.org/#!wiki=index (vi povas trovi ĉiujn gtk-elementojn kun iliaj metodoj ...)
6 komentoj, lasu la viajn
Tre bone, mi demandos vin kiel mi povas fari specon de TABS sed vertikale, kvankam ili ne nepre devas esti langetoj, ili povas esti butonoj aŭ Baskulaj Butonoj, sed mi bezonas la konduton de langeto, ke kiam vi tuŝas 1 ĝian enhavon vidiĝas kaj la alia langeto estas malŝaltita, mi ne scias ĉu mi klarigas min, mi lasas bildon por vidi ĉu vi povas doni al mi iujn informojn por esplori. Dankon!
BILDO: http://i.imm.io/1jURw.png
Ĉu la «aranĝo» aŭ la teksto ŝanĝiĝas (ekzemple)?
Kataluna parla
Ĉi tio estas tre bona, fakte ĝi estas io simila al tio, kion mi serĉis, demando, ĉu ĉi tiu demando povus esti iel ligita al la fina stacio?
Ekzemple: Por komenci mi prenas la tempon respondi, mi lasas ĝin senlima kaj tio estus kion mi ŝatus fari.
Kiun labortablan medion vi volas instali?
KDE
Gnome 3
Cinamo
unueco
Kaj ĉiu el ĉi tiuj, kiuj estis ligita al ĝia respektiva instalada komando en la terminalo, sudo apt-get install ubuntu-desktop
Jes, vi nur devus skribi Process.spawn_command_line_async ("apt-get install ubuntu-desktop");
http://valadoc.org/#!api=glib-2.0/GLib.Process.spawn_command_line_sync
Bonege, mi ŝatas la afiŝon, mi praktikos (kaj mi antaŭĝuas ĝin), salutojn