view mde/gui/widget/Popup.d @ 112:fe061009029d

EnumContent; log level can be selected from a popup list. New EnumContent, with code to load translations in Items. Editable as an AStringContent. Hacked OptionsMisc to use an EnumContent. Implemented a EnumContentWidget providing a pop-up list to select from (still needs improving). Moved IContent to its own module. ContentExceptions thrown via WDCCheck now. Fixed a small bug with reloading translations.
author Diggory Hardy <diggory.hardy@gmail.com>
date Sat, 13 Dec 2008 12:54:43 +0000
parents 1655693702fc
children
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/>. */

/// Pop-up widgets.
module mde.gui.widget.Popup;

import mde.gui.widget.Widget;
import mde.content.IContent;

/** Shows a "pop-up" widget tree when clicked. */
class PopupButtonWidget : AButtonWidget
{
    this (IWidgetManager mgr, widgetID id, WidgetData data, IContent content) {
	WDCheck (data, 1,2);
	subWidget = mgr.makeWidget (data.strings[0], content);
        
        adapter = mgr.renderer.getAdapter;
	adapter.text = data.strings[1];
        adapter.getDimensions (mw, mh);
        w = mw;
        h = mh;
        super (mgr, id, data);
    }
    
    bool setup (uint n, uint flags) {
	return subWidget.setup (n,flags);
    }
    
    bool saveChanges () {
	return subWidget.saveChanges;
    }
    
    void activated () {
        mgr.addPopup (x,y, subWidget);
    }
    
    void draw () {
        super.draw ();
        adapter.draw (x,y);
    }
    
protected:
    IChildWidget subWidget;
    
    IRenderer.TextAdapter adapter;
}