comparison mde/gui/widget/createWidget.d @ 91:4d5d53e4f881

Shared alignment for dynamic content lists - finally implemented! Lots of smaller changes too. Some debugging improvements. When multiple .mtt files are read for merging, files with invalid headers are ignored and no error is thrown so long as at least one file os valid.
author Diggory Hardy <diggory.hardy@gmail.com>
date Thu, 16 Oct 2008 17:43:48 +0100
parents b525ff28774b
children 2a364c7d82c9
comparison
equal deleted inserted replaced
90:b525ff28774b 91:4d5d53e4f881
44 * this (IWidgetManager mgr, WidgetData data); 44 * this (IWidgetManager mgr, WidgetData data);
45 * // Called if (data.ints[0] & WIDGET_TYPES.TAKES_CONTENT): 45 * // Called if (data.ints[0] & WIDGET_TYPES.TAKES_CONTENT):
46 * this (IWidgetManager mgr, WidgetData data, IContent content); 46 * this (IWidgetManager mgr, WidgetData data, IContent content);
47 * --- 47 * ---
48 *************************************************************************************************/ 48 *************************************************************************************************/
49 IChildWidget createWidget (IWidgetManager mgr, WidgetData data, IContent content) 49 IChildWidget createWidget (IWidgetManager mgr, widgetID id, WidgetData data, IContent content)
50 in { 50 in {
51 assert (mgr !is null, "createWidget: mgr is null"); 51 assert (mgr !is null, "createWidget: mgr is null");
52 } body { 52 } body {
53 if (data.ints.length < 1) { 53 if (data.ints.length < 1) {
54 logger.error ("No int data; creating a debug widget"); 54 logger.error ("No int data; creating a debug widget");
59 //pragma (msg, binarySearch ("type", WIDGETS)); 59 //pragma (msg, binarySearch ("type", WIDGETS));
60 mixin (binarySearch ("type", WIDGETS)); // creates widget by type: new XWidget (mgr, data [, parent]); 60 mixin (binarySearch ("type", WIDGETS)); // creates widget by type: new XWidget (mgr, data [, parent]);
61 61
62 // Not returned a new widget... 62 // Not returned a new widget...
63 logger.error ("Bad widget type: {}; creating a debug widget instead.",type); 63 logger.error ("Bad widget type: {}; creating a debug widget instead.",type);
64 return new DebugWidget (mgr, data); 64 return new DebugWidget (mgr, id, data);
65 } 65 }
66 66
67 /+ for converting to a char[] name (unused) 67 /+ for converting to a char[] name (unused)
68 static this() { 68 static this() {
69 WIDGET_NAMES = [ 69 WIDGET_NAMES = [
127 char[] ret; 127 char[] ret;
128 foreach (c; consts) { 128 foreach (c; consts) {
129 ret ~= "if (" ~ var ~ " == WIDGET_TYPE." ~ c ~ ") {\n" ~ 129 ret ~= "if (" ~ var ~ " == WIDGET_TYPE." ~ c ~ ") {\n" ~
130 " debug (mdeWidgets) logger.trace (\"Creating new "~c~"Widget.\");\n" ~ 130 " debug (mdeWidgets) logger.trace (\"Creating new "~c~"Widget.\");\n" ~
131 " static if (WIDGET_TYPE."~c~" & WIDGET_TYPE.TAKES_CONTENT)\n" ~ 131 " static if (WIDGET_TYPE."~c~" & WIDGET_TYPE.TAKES_CONTENT)\n" ~
132 " return new " ~ c ~ "Widget (mgr, data, content);\n" ~ 132 " return new " ~ c ~ "Widget (mgr, id, data, content);\n" ~
133 " else\n" ~ 133 " else\n" ~
134 " return new " ~ c ~ "Widget (mgr, data);\n" ~ 134 " return new " ~ c ~ "Widget (mgr, id, data);\n" ~
135 "} else "; 135 "} else ";
136 } 136 }
137 ret = ret[0..$-6] ~ '\n'; // remove last else 137 ret = ret[0..$-6] ~ '\n'; // remove last else
138 return ret; 138 return ret;
139 } 139 }