next up previous contents
Next: Käyttäjän syötteet (keyboard.c, keyboard.h) Up: Rekisteröintiohjelmiston toteutus Previous: Pääohjelma (sample.c, init.c, sample.h)

Valikkojen toteutus (menu.c, menu.h)

Tiedosto menu.h sisältää valikkojen käyttöön liittyvien funktioiden prototyypit sekä tietotyyppien ja makrojen määrittelyt. Valikko on rakenteeltaan taulukko valintasolmuja. Valintasolmu taas on tietuetyyppi, joka sisältää seuraavat kentät:

is_active
Totuusarvo, joka kertoo onko valinta aktiivinen.
key
Merkki, jolla kyseinen valinta tapahtuu.
event
Funktio, jota kyseisellä valinnalla kutsutaan.
name
Valikkoon tulostettava teksti.
sub_menu_p
Valintaan mahdollisesti liittyvä alivalikko.
Tiedosto menu.h määrittelee myös ne kenttien tyypit, jotka eivät ole C-kielen sisäänrakennettuja tyyppejä ja makrot, jotka määräävät valikon maksimikokoon, valikkotekstien maksimipituuden sekä käyttäjän syötteelle varatun tilan valikkojen käyttöä varten.

Tiedosto menu.c sisältää valikkorakenteen käyttöön liittyvät funktiot, joita on vain kaksi:

draw_menu
Valikon tulostus.
ask_menu ($\rightarrow$ keyboard)
Luetaan käyttäjältä syöte kunnes syöte vastaa jotain valikon valintaa ja palautetaan kutsujalle valinnan indeksi.
Valikkorakenteen toteutus riippuu moduulista keyboard, koska funktio ask_menu käyttää kyseisen moduulin määrittelemää funktiota input_string. Moduuli riippuu myös otsikkotiedostosta util.h, koska makrot TRUE ja FALSE on määritelty kyseisessä tiedostossa.

Valikkojen toteutus ei tue oliomallissa esitettyjä vaatimuksia valintojen modifioinnista tai käyttäjän syötteen jäsentämisestä. Kyseinen logiikka on nykyisessä toteutuksessa koodattu itse pääohjelmaan. Valikkoja ei myöskään voi tallentaa levylle. Sekvenssit täytyy määritellä halutunlaisiksi aina sovelluksen käynnistyessä tai muokata tiedostoa init.c ja kääntää rekisteröintisovellus uudelleen.


next up previous contents
Next: Käyttäjän syötteet (keyboard.c, keyboard.h) Up: Rekisteröintiohjelmiston toteutus Previous: Pääohjelma (sample.c, init.c, sample.h)
Antti Miettinen
9/3/1997

Valid HTML 3.2!