Mercurial > projects > mde
view mde/gui/widget/miscContent.d @ 143:2ac3e0012788
Added a simple Slider widget.
Moved SwitchWidget into PopupMenuWidget's module and renamed the module ParentContent.
Made editContent create DisplayContentWidgets for DebugContent (instead of ButtonContentWidgets).
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Mon, 09 Feb 2009 23:27:41 +0000 |
parents | c94ec5594449 |
children | 783969f4665c |
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/>. */ /****************************************************************************** * Some non-parent widgets for displaying or editing content. * * (There are other non-parent content widgets in TextWidget). *****************************************************************************/ module mde.gui.widget.miscContent; import mde.gui.widget.AChildWidget; import mde.content.AStringContent; import mde.gui.exception; debug { import tango.util.log.Log : Log, Logger; private Logger logger; static this () { logger = Log.getLogger ("mde.gui.widget.miscContent"); } } /// Editable boolean widget class BoolContentWidget : AButtonWidget { this (IWidgetManager mgr, IParentWidget parent, widgetID id, WidgetData, IContent c) { content = cast(BoolContent) c; if (content is null) throw new ContentException (this); super (mgr, parent, id); wdimPair s = mgr.renderer.getToggleSize; w = mw = s.x; h = mh = s.y; } override void draw () { mgr.renderer.drawToggle (x,y, content(), pushed); } override void activated () { content = !content(); } protected: BoolContent content; } /// A button connected to an EventContent class ButtonContentWidget : AButtonWidget { this (IWidgetManager mgr, IParentWidget parent, widgetID id, WidgetData, IContent c) { content = cast(Content) c; if (content is null) throw new ContentException (this); adapter = mgr.renderer.getAdapter (); super (mgr, parent, id); } override bool setup (uint n, uint flags) { if (!(flags & 3)) return false; // string or renderer (and possibly font) changed adapter.text = content.toString(1); adapter.getDimensions (mw, mh); if (mw != w || mh != h) { w = mw; h = mh; } return true; } override void draw () { super.draw(); adapter.draw (x,y); } override void activated () { content.endEvent; } protected: IRenderer.TextAdapter adapter; Content content; int index; } /// Display a double in a progress bar/slider. Non-editable. class SliderContentWidget : AChildWidget { this (IWidgetManager mgr, IParentWidget parent, widgetID id, WidgetData, IContent c) { content = cast(DoubleContent) c; if (content is null) throw new ContentException (this); super (mgr, parent, id); wdimPair s = mgr.renderer.getSliderSize; w = mw = s.x; h = mh = s.y; } override bool isWSizable () { return true; } override void draw () { mgr.renderer.drawSlider (x,y, w, content()); } protected: DoubleContent content; }