Efter första inlägget Jag läste en kommentar att det vore bättre att börja med något mer komplicerat än en "hejvärld", då kommer jag att göra en sekvens (3 o 4) inlägg skapa en enkel applikation (med vala + gtk 3).
Applikationen kommer att bestå av ett enkelt flervalsfråga- och svarsspel (Trivia-typ), där svar på tre frågor fel slutar (spelet är slut), och målet är att svara på så många frågor som möjligt för varje fråga du har begränsad tid till svar.
Design
Huvuddesignen för vår ansökan kommer att vara:
Senare kommer vi att sätta några knappar som ger oss möjlighet till 50% (eliminera två felaktiga svar), frysa tid, skicka en fråga. Alla kan bara användas en gång, avaktiveras en gång.
Design a Kod
Som vi kan se i designen kan vi se de gtk-element som vi kommer att använda:
Svar -> Knapp.
Fråga -> Etikett.
Tid -> ProgressBar.
Fel / rätta punkter och frågor -> Etikett.
Vi kan se att vi har en vertikal struktur, därför kan vi använda GBox vertikalt.
Kod
int main (sträng [] args) {Gtk.init (ref args); var fönster = nytt 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); // vertikal ruta var ruta = ny Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // Etikett för frågan var fråga = ny Gtk.Label ("Fråga?"); // progressiv tidsfält var time_bar = ny Gtk.ProgressBar (); time_bar.set_text ("Time"); time_bar.set_show_text (true); // Svarsknappar var respons1 = ny Gtk.Button.with_label ("Svar 1"); var resposta2 = ny Gtk.Button.with_label ("Svara 2"); var resposta3 = ny Gtk.Button.with_label ("Svara 3"); var resposta4 = ny Gtk.Button.with_label ("Svara 4"); // labels info var points = new Gtk.Label ("Points: 0"); box.pack_start (fråga); box.pack_start (tidsfält); box.pack_start (svar1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (poäng); window.add (rutan); window.show_all (); Gtk.main (); returnera 0;}
För att flytta "tiden" använder vi GLib.Timeout där varje 500 millisekunder aktiveras (det är en slinga där variabeln som innehåller värdet på vår stapel ökar)
GLib.Timeout.add (500, () => {// Få aktuell förlopp: // (0.0 -> 0%; 1.0 -> 100%) dubbel förlopp = time_bar.get_fraction (); // Uppdatera fältet: progress = progress + 0.01; time_bar.set_fraction (progress); // Upprepa tills 100% returnera progress <1.0;});
Länkar av intresse
http://www.valadoc.org/#!wiki=index (du kan hitta alla gtk-element med deras metoder ...)
Mycket bra, jag kommer att fråga dig hur jag kan göra ett slags TABS men vertikalt, även om de inte nödvändigtvis behöver vara flikar, de kan vara knappar eller ToggleButtons, men jag behöver beteendet hos en flik, att när man rör 1 till dess innehåll ses och den andra fliken är inaktiverad, jag vet inte om jag förklarar mig själv, jag lämnar en bild för att se om du kan ge mig lite information att undersöka. Tack!
BILD: http://i.imm.io/1jURw.png
"Layouten" eller textändringen (till exempel)?
Katalanska parla
Det här är väldigt bra, det är faktiskt något som liknar det jag letade efter, en fråga, kan den här frågan kopplas till terminalen på något sätt?
Till exempel: Till att börja med tar jag mig tid att svara, jag låter det vara obegränsat och det skulle jag vilja göra.
Vilken skrivbordsmiljö vill du installera?
KDE
Gnome 3
Kanel
Unity
Och var och en av dessa som var kopplad till dess respektive installationskommando i terminalen, sudo apt-get install ubuntu-desktop
Ja, du skulle bara behöva skriva Process.spawn_command_line_async ("apt-get install ubuntu-desktop");
http://valadoc.org/#!api=glib-2.0/GLib.Process.spawn_command_line_sync
Utmärkt, jag gillar inlägget, jag kommer att öva (och jag ser fram emot det), hälsningar