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;