Després del primer post llei un comentari que estaria millor començar amb una mica més complex que un «hola món», llavors faré una successió (O 3 4) De post creant una senzilla aplicació (amb vala + gtk 3).
L'aplicació consistirà en un senzill joc de preguntes i respostes tipus test (tipus Triviados), en la qual a l'respondre malament 3 preguntes s'acaba (game over), i l'objectiu és respondre tantes preguntes com et sigui possible, per a cada pregunta teniu un temps limitat per respondre.
Disseny
Disseny principal de la nostra aplicació serà:
Més endavant posarem uns botons que ens donaran l'opció de 50% (eliminant dues respostes errònies), congelar el temps, passar una pregunta. Tots ells només es podran fer servir un cop, quedant inhabilitats un cop usats.
disseny a Codi
Com podem veure en el disseny podem veure els elements gtk que farem servir:
Respostes -> Button.
Pregunta -> Label.
Temps -> ProgressBar.
Punts i preguntes errònies / correctes -> Label.
Podem veure que tenim una estructura vertical per tant podrem utilitzar GBox en forma vertical.
Codi
int main (string [] args) {Gtk.init (ref args); var window = new Gtk.Window (); window.title = "app"; window.window_position = Gtk.WindowPosition.CENTER; window.set_default_size (300, 340); window.destroy.connect (Gtk.main_quit); window.set_border_width (10); // caixa vertical var box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // Label per a la pregunta var pregunta = new Gtk.Label ( "Pregunta?"); // barra prograsiva de el temps var barra_tiempo = new Gtk.ProgressBar (); barra_tiempo.set_text ( "Temps"); barra_tiempo.set_show_text (true); // Botons de resposta var resposta1 = new Gtk.Button.with_label ( "Resposta 1"); var resposta2 = new Gtk.Button.with_label ( "Resposta 2"); var resposta3 = new Gtk.Button.with_label ( "Resposta 3"); var resposta4 = new Gtk.Button.with_label ( "Resposta 4"); // labels info var punts = new Gtk.Label ( "Punts: 0"); box.pack_start (pregunta); box.pack_start (barra_tiempo); box.pack_start (resposta1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (punts); window.add (box); window.show_all (); Gtk.main (); return 0;}
Per moure el «temps» fem servir GLib.Timeout on a cada 500 mil·lisegons s'activarà (és un bucle on incrementés la variable que contingui el valor de la nostra barra)
GLib.Timeout.add (500, () => {// Get the current progress: // (0.0 -> 0%; 1.0 -> 100%) double progress = barra_tiempo.get_fraction (); // Update the bar: progress = progress + 0.01; barra_tiempo.set_fraction (progress); // Repeat until 100% return progress <1.0;});
Links d'interès
http://www.valadoc.org/#!wiki=index (Pots trobar tots els elements gtk amb els seus mètodes ...)
Molt bo, che et faig una consulta com puc fer una mena de PESTANYES però de forma vertical, tot i que no necessàriament han de ser pestanyes poden ser botons o ToggleButtons, però necessito el comportament d'una pestanya, que a l'tocar 1 es vegi el seu contingut i l'altra pestanya es desactivi, no sé si m'explico deixo una imatge a veure si pots donar-me alguna dada com per investigar. Gràcies!
IMATGE: http://i.imm.io/1jURw.png
El «layout» o el canvi de text (per exemple)?
parla català
Això està molt bé de fet és una cosa semblant al que anava buscant, una pregunta ¿aquest pregunta es podria enllaçar amb la terminal d'alguna manera?
Per exemple: Per començar trec el temps per contestar el deixo en il limitat i seria així el que voldria fer.
¿Que entorn d'escriptori vol instal·lar?
KDE
Gnome 3
Canela
Unitat
I cada un d'aquests que estigués enllaçat el seu respectiu ordre d'instalacion a la terminal, sudo apt-get install ubuntu-desktop
Si, només hauries d'escriure Process.spawn_command_line_async ( «apt-get install ubuntu-desktop»);
http://valadoc.org/#!api=glib-2.0/GLib.Process.spawn_command_line_sync
Excel·lent, em grat el post, estaré practicant (i veig per avançar-me), salutacions