//-----------------------------------------------------------------
void
MenuOptions::prepareMenu()
{
    if (m_container) {
        deregisterDrawable(m_container);
        delete m_container;
        m_container = NULL;
    }

    Labels labels(Path::dataReadPath("script/labels.lua"));
    IWidget *soundBox = createSoundPanel(labels);
    IWidget *musicBox = createMusicPanel(labels);

    VBox *vbox = new VBox();
    vbox->addWidget(soundBox);
    vbox->addWidget(new WiSpace(0, 10));
    vbox->addWidget(musicBox);
    vbox->addWidget(new WiSpace(0, 10));
    vbox->addWidget(createLangPanel(labels));
    vbox->addWidget(new WiSpace(0, 5));
    vbox->addWidget(createSpeechPanel(labels));
    vbox->addWidget(new WiSpace(0, 5));
    vbox->addWidget(createSubtitlesPanel(labels));

    IWidget *backButton = createBackButton(labels);
    m_statusBar = createStatusBar(musicBox->getW() - backButton->getW());
    HBox *backBox = new HBox();
    backBox->addWidget(m_statusBar);
    backBox->addWidget(backButton);

    vbox->addWidget(backBox);
    m_container = vbox;
    registerDrawable(m_container);
}
//-----------------------------------------------------------------
IWidget *
MenuOptions::createMusicPanel(const Labels &labels)
{
    HBox *musicBox = new HBox();
    musicBox->addWidget(new WiPicture(
                Path::dataReadPath("images/menu/volume_music.png")));
    musicBox->addWidget(new WiSpace(10, 0));
    musicBox->addWidget(new Slider("volume_music", 0, 100));
    musicBox->setTip(labels.getLabel("menu_music"));
    return musicBox;
}
//-----------------------------------------------------------------
IWidget *
MenuOptions::createSoundPanel(const Labels &labels)
{
    HBox *soundBox = new HBox();
    soundBox->addWidget(new WiPicture(
                Path::dataReadPath("images/menu/volume_sound.png")));
    soundBox->addWidget(new WiSpace(10, 0));
    soundBox->addWidget(new Slider("volume_sound", 0, 100));
    soundBox->setTip(labels.getLabel("menu_sound"));
    return soundBox;
}
/**
 * Creates menu to select 'speech'.
 * NOTE: default speech is customized in "script/init.lua"
 */
IWidget *
MenuOptions::createSpeechPanel(const Labels &labels)
{
    HBox *speechBox = new HBox();
    speechBox->addWidget(new WiPicture(
                Path::dataReadPath("images/menu/speech.png")));
    speechBox->addWidget(new WiSpace(10, 0));
    speechBox->addWidget(new SelectLang("speech",
            Path::dataReadPath("script/select_speech.lua")));
    speechBox->setTip(labels.getLabel("menu_speech"));
    return speechBox;
}
//-----------------------------------------------------------------
IWidget *
MenuOptions::createLangPanel(const Labels &labels)
{
    HBox *langBox = new HBox();
    langBox->addWidget(new WiPicture(
                Path::dataReadPath("images/menu/lang.png")));
    langBox->addWidget(new WiSpace(10, 0));
    langBox->addWidget(new SelectLang("lang",
                Path::dataReadPath("script/select_lang.lua")));
    langBox->setTip(labels.getLabel("menu_lang"));
    return langBox;
}
//-----------------------------------------------------------------
IWidget *
MenuOptions::createSubtitlesPanel(const Labels &labels)
{
    HBox *chooseBox = new HBox();
    chooseBox->addWidget(new WiPicture(
                Path::dataReadPath("images/menu/subtitle.png")));
    chooseBox->addWidget(new WiSpace(10, 0));
    chooseBox->addWidget(new RadioBox("subtitles", "1",
                Path::dataReadPath("images/menu/subtitles/yes.png")));
    chooseBox->addWidget(new RadioBox("subtitles", "0",
                Path::dataReadPath("images/menu/subtitles/no.png")));
    chooseBox->setTip(labels.getLabel("menu_subtitles"));
    return chooseBox;
}