Kreante programon Vala + Gtk3. [1a parto]

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:

app

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;}

 

Kapto de 2013-11-02 21:44:14

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 ...)


La enhavo de la artikolo aliĝas al niaj principoj de redakcia etiko. Por raporti eraron alklaku Ĉi tie.

6 komentoj, lasu la viajn

Lasu vian komenton

Via retpoŝta adreso ne estos eldonita. Postulita kampojn estas markita per *

*

*

  1. Respondeculo pri la datumoj: Miguel Ángel Gatón
  2. Celo de la datumoj: Kontrola SPAM, administrado de komentoj.
  3. Legitimado: Via konsento
  4. Komunikado de la datumoj: La datumoj ne estos komunikitaj al triaj krom per laŭleĝa devo.
  5. Stokado de datumoj: Datumbazo gastigita de Occentus Networks (EU)
  6. Rajtoj: Iam ajn vi povas limigi, retrovi kaj forigi viajn informojn.

  1.   lozanotux diris

    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

    1.    lolbimbo diris

      Ĉu la «aranĝo» aŭ la teksto ŝanĝiĝas (ekzemple)?

  2.   pandev92 diris

    Kataluna parla

  3.   konsternita diris

    Ĉ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

    1.    lolbimbo diris

      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

  4.   Saúl Uribe diris

    Bonege, mi ŝatas la afiŝon, mi praktikos (kaj mi antaŭĝuas ĝin), salutojn