diff mde/gui/WidgetDataSet.d @ 93:08a4ae11454b

Widgets now save dimensions without preventing structural changes in the base config file from applying. Widget dimensional data separated from other data in files, hence above change. Moved TextAdapter from TextWidget to IRenderer.
author Diggory Hardy <diggory.hardy@gmail.com>
date Tue, 21 Oct 2008 11:35:15 +0100
parents 4d5d53e4f881
children 41582439a42b
line wrap: on
line diff
--- a/mde/gui/WidgetDataSet.d	Tue Oct 21 09:57:19 2008 +0100
+++ b/mde/gui/WidgetDataSet.d	Tue Oct 21 11:35:15 2008 +0100
@@ -50,6 +50,8 @@
         // Priority is HIGH_LOW. Only load tag if it doesn't already exist.
         if (tp == "WidgetData" && (id in widgetData) is null) {
             widgetData[id] = deserialize!(WidgetData) (dt);
+        } else if (tp == "WDims" && (id in dimData) is null) {
+            dimData[id] = cast(wdims) deserialize!(int[]) (dt);
         }
     }
     // Only WidgetDataChanges is used for writing.
@@ -66,8 +68,15 @@
         return *p;
     }
     
+    /** Get the widget dimensions for widget i (null if none). */
+    wdims dims (widgetID id) {
+        auto p = id in dimData;
+        return p ? *p : null;
+    }
+    
 protected:
-    WidgetData[widgetID] widgetData;    // Per-widget data:
+    WidgetData[widgetID] widgetData;    // Per-widget data
+    wdims[widgetID] dimData;            // Per-widget sizes
 }
 
 /*************************************************************************************************
@@ -90,6 +99,8 @@
     void writeAll (ItemDelg dlg) {
         foreach (id,data; widgetData)
             dlg ("WidgetData", id, serialize!(WidgetData) (data));
+        foreach (id,dim; dimData)
+            dlg ("WDims", id, serialize!(int[]) (cast(int[]) dim));
     }
     //END Mergetag code
     
@@ -100,6 +111,12 @@
         base.widgetData[i] = d;
     }
     
+    /** Set the widget dimensions for widget i. */
+    void setDims (widgetID id, wdims d) {
+        dimData[id] = d;
+        base.dimData[id] = d;
+    }
+    
     /** Do any changes exist? True if no changes have been stored. */
     bool none () {
         return widgetData.length == 0;