view mde/menus.d @ 133:9fd705793568

Fixed menu popup bug, improved recursion detection. Menu popups can now determine whether or not they are sub-menus. Recursion detection can now also check content (if not the same, there's not a risk of infinite recursion).
author Diggory Hardy <diggory.hardy@gmail.com>
date Fri, 23 Jan 2009 16:05:05 +0000
parents 264028f4115a
children 9f035cd139c6
line wrap: on
line source

/* LICENSE BLOCK
Part of mde: a Modular D game-oriented Engine
Copyright © 2007-2008 Diggory Hardy

This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>. */

/******************************************************************************
 * Import this module to add some standard menus to imde.menus.
 * 
 * Note that the widget manager also adds menu items in debug mode.
 *****************************************************************************/
module mde.menus;

import mde.content.miscContent;
import mde.imde;
debug {
    import tango.util.log.Log : Log, Logger;
    private Logger logger;
    static this () {
        logger = Log.getLogger ("mde.menus");
    }
}

static this () {
    auto quit = new EventContent("quit");
    quit.addCallback ((Content){
        debug logger.trace ("Quit (from menu)");
        run = false;
    });
    auto main = new ContentList ("main", [cast(Content)quit]);
    debug {
        main.append (new ContentList ("sm1", [cast(Content) new EventContent ("a"), new EventContent ("b")]));
        main.append (new ContentList ("sm2", [cast(Content) new EventContent ("c"), new EventContent ("d")]));
    }
    menus.append (main);
}