Mercurial > projects > mde
diff mde/content/miscContent.d @ 115:1b1e2297e2fc
Enums handled more generically now via either a popup list or flat list of BoolContentWidgets.
EnumContent is an IContentList with BoolContent sub-contents.
Content modules moved around (again).
ContentListWidget can now list horizontally.
Log-level setting callback.
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Sat, 20 Dec 2008 17:57:05 +0000 |
parents | mde/content/Content.d@fe061009029d |
children | d3b2cefd46c9 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mde/content/miscContent.d Sat Dec 20 17:57:05 2008 +0000 @@ -0,0 +1,74 @@ +/* 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/>. */ + +/************************************************************************************************* + * The content system − a few content classes. + *************************************************************************************************/ +module mde.content.miscContent; + +public import mde.content.Content; + +debug { + import tango.util.log.Log : Log, Logger; + private Logger logger; + static this () { + logger = Log.getLogger ("mde.content.miscContent"); + } +} + +/** A generic way to handle a list of type IContent. */ +class ContentList : Content, IContentList +{ + this (char[] symbol, Content[] list = null) { + list_ = list; + super (symbol); + } + this (char[] symbol, Content[char[]] l) { + list_.length = l.length; + size_t i; + foreach (c; l) + list_[i++] = c; + super (symbol); + } + + override Content[] list () { + return list_; + } + +protected: + final Content[] list_; +} + +/** Created on errors to display and log a message. */ +class ErrorContent : IContent +{ + this (char[] msg) { + this.msg = msg; + } + + override char[] toString (uint i) { + return i == 0 ? msg + : i == 1 ? "Error" + : null; + } + +protected: + char[] msg; +} + +/** A Content with no value but able to pass on an event. +* +* The point being that a button can be tied to one of these. */ +alias Content EventContent;