Izrada aplikacije Vala + Gtk3. [1. dio]

Nakon prvi post Pročitao sam komentar da bi bilo bolje započeti s nečim složenijim od "zdravo svijeta", tada ću napraviti sekvencu (O 3 4) post koji stvara jednostavnu aplikaciju (s vala + gtk 3).

Aplikacija će se sastojati od jednostavne igre s višestrukim izborom pitanja i odgovora (vrsta Trivia), u kojoj se odgovor na 3 pitanja pogrešno završava (igra je gotova), a cilj je odgovoriti na što više pitanja, za svako pitanje imate ograničeno vrijeme odgovoriti.

Dizajn

Glavni dizajn naše aplikacije bit će:

aplikacija

Kasnije ćemo staviti neke tipke koje će nam dati mogućnost 50% (uklanjajući dva pogrešna odgovora), zamrznuti vrijeme i proslijediti pitanje. Svi se oni mogu koristiti samo jednom, a jednom se onemogućuju.

Dizajn a Šifra
Kao što možemo vidjeti u dizajnu, možemo vidjeti gtk elemente koje ćemo koristiti:

Odgovori -> Gumb.

Pitanje -> Oznaka.

Vrijeme -> ProgressBar.

Pogrešne / ispravne točke i pitanja -> Oznaka.

Vidimo da imamo vertikalnu strukturu, stoga GBox možemo koristiti vertikalno.

Šifra

int main (string [] args) {Gtk.init (ref args); var prozor = novi Gtk.Window (); window.title = "aplikacija"; window.window_position = Gtk.WindowPosition.CENTER; window.set_default_size (300, 340); window.destroy.connect (Gtk.main_quit); window.set_border_width (10); // okomiti okvir var box = novi Gtk.Box (Gtk.Orientation.VERTICAL, 0); box.set_spacing (10); // Oznaka za pitanje var question = new Gtk.Label ("Pitanje?"); // traka vremenskog programa var time_bar = new Gtk.ProgressBar (); timebar.set_text ("Vrijeme"); time_bar.set_show_text (true); // Gumbi za odgovor var response1 = new Gtk.Button.with_label ("Response 1"); var resposta2 = novi Gtk.Button.with_label ("Odgovor 2"); var resposta3 = novi Gtk.Button.with_label ("Odgovor 3"); var resposta4 = novi Gtk.Button.with_label ("Odgovor 4"); // označava info var points = new Gtk.Label ("Bodovi: 0"); box.pack_start (pitanje); box.pack_start (time_bar); box.pack_start (odgovor1); box.pack_start (resposta2); box.pack_start (resposta3); box.pack_start (resposta4); box.pack_start (bodovi); window.add (kutija); window.show_all (); Gtk.main (); povratak 0;}

Hvatanje iz 2013-11-02 21:44:14

Za pomicanje "vremena" koristimo GLib.Timeout gdje će se aktivirati svakih 500 milisekundi (to je petlja u kojoj će se povećavati varijabla koja sadrži vrijednost naše trake)

GLib.Timeout.add (500, () => {// Dohvatite trenutni napredak: // (0.0 -> 0%; 1.0 -> 100%) double progress = time_bar.get_fraction (); // Ažurirajte traku: progress = progress + 0.01; time_bar.set_fraction (progress); // Ponavljamo dok 100% ne vrati napredak <1.0;});

Veze od interesa 
http://www.valadoc.org/#!wiki=index (sve gtk elemente možete pronaći s njihovim metodama ...)


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   lozanotux dijo

    Vrlo dobro, pitat ću vas kako mogu napraviti neku vrstu TABS-a, ali okomito, iako ne moraju nužno biti kartice, to mogu biti gumbi ili ToggleButtons, ali trebam ponašanje kartice koja prilikom dodirivanja 1 njenog sadržaja se vidi, a druga kartica je onemogućena, ne znam da li se objašnjavam, ostavljam sliku da vidim možete li mi dati neke informacije za istraživanje. Hvala vam!

    SLIKA: http://i.imm.io/1jURw.png

    1.    lolbimbo dijo

      "Izgled" ili promjena teksta (na primjer)?

  2.   pandev92 dijo

    Katalonski parla

  3.   zapanjen dijo

    Ovo je jako dobro, zapravo, nešto je slično onome što sam tražio, pitanje, može li se ovo pitanje na neki način povezati s terminalom?
    Na primjer: Za početak uzimam vremena za odgovor, ostavljam ga neograničeno i to bi bilo ono što bih želio učiniti.

    Koje radno okruženje želite instalirati?
    KDE
    Gnom 3
    Cimet
    Jedinstvo

    I svaka od njih koja je bila povezana s odgovarajućom instalacijskom naredbom u terminalu, sudo apt-get install ubuntu-desktop

    1.    lolbimbo dijo

      Da, samo biste morali napisati Process.spawn_command_line_async ("apt-get install ubuntu-desktop");

      http://valadoc.org/#!api=glib-2.0/GLib.Process.spawn_command_line_sync

  4.   Saúl Uribe dijo

    Izvrsno, sviđa mi se post, vježbat ću (i radujem mu se), pozdrav