2003/02/12 06:37:31
[org.ibex.core.git] / src / org / xwt / builtin / splash.xwt
index aba4a34..dcbc66c 100644 (file)
@@ -2,41 +2,65 @@
 
     <template thisbox="window" orient="vertical">
 
-        width = $inner.width;
-        height = $inner.height;
+        minwidth = maxwidth = $inner.width;
+        minheight = maxheight = $inner.height;
         x = (xwt.screenWidth - width) / 2;
         y = (xwt.screenHeight - height) / 2;
 
+        _KeyPressed = function(k) {
+            if (k == "escape") thisbox = null;
+        }
+
         xwt.thread = function() {
-            var origin = xwt.origin;
-            if (origin.substring(0, 21) == "http://launch.xwt.org")
-                origin = origin.substring(22);
-
-            xwt.loadArchive(origin, function(num, den) {
-                    $left.flex = 50 * (num / den);
-                    $right.flex = 50 + 50 * (1.0 - num /den);
-                    $status.text = "Downloading: " + xwt.math.ceil(num * 100 / den) + "% [" + num + " bytes]";
-                });
-
-            xwt.newBox("main", function(num, den) {
-                    $left.flex = 50 + 50 * (num / den);
-                    $right.flex = 50 * (1.0 - num / den);
-                    $status.text = "Initializing: " + xwt.math.ceil(num * 100 / den) + "%";
-                    xwt.yield();
-                });
-
-            thisbox = null;
+            try {
+                var origin = xwt.origin;
+                if (origin.substring(0, 21) == "http://launch.xwt.org") {
+                    origin = origin.substring(22);
+                    origin = "http://" + origin.substring(origin.indexOf('/') + 1);
+                }
+                xwt.println("origin is " + origin);
+    
+                xwt.loadArchive(origin, function(num, den) {
+                        $left.flex = 50 * (num / den);
+                        $right.flex = 50 + 50 * (1.0 - num /den);
+                        var pct = xwt.math.ceil(num * 100 / den);
+                        if (1024 > num) {
+                            num = "" + num + " bytes";
+                        } else if (1024 * 1024 > num) {
+                            num = "" + xwt.math.ceil(num / 1024) + "kb";
+                        } else {
+                            num = "" + xwt.math.ceil(num / (1024 * 1024)) + "Mb";
+                        }
+                        $status.text = "Downloading: " + pct + "% [" + num + "]";
+                    });
+    
+                    xwt.newBox().apply("main", function(num, den) {
+                        $left.flex = 50 + 50 * (num / den);
+                        $right.flex = 50 * (1.0 - num / den);
+                        if ($right.flex == 0) $right.width = 0;
+                        $status.text = "Initializing: " + xwt.math.ceil(num * 100 / den) + "%";
+                    });
+                    thisbox = null;
+
+            } catch (e) {
+                $status.text = "Error: " + e;
+                if ($status.text.substring(0, 13) == "Error: Error:") {
+                    $status.text = $status.text.substring(7) +
+                                   " (press Esc to quit)";
+                }
+            }
+
         }
 
         <box absolute="true" sizetoimage="true" id="inner" image="org.xwt.builtin.lithium"/>
 
         <box/>
-        <box text="Downloading user interface..." vshrink="true" hpad="20" vpad="3" id="status" textcolor="white"/>
-
-        <box vpad="5" hpad="30" height="20">
-            <box color="red" flex="0.0" id="left"/>
-            <box flex="100.0" id="right" color="blue"/>
+        <box text="Downloading user interface..." vshrink="true" hpad="4" vpad="3" id="status" textcolor="white"/>
+        <box hpad="4" height="10">
+            <box flex="0.0" image="org.xwt.builtin.progress" tile="true" id="left"/>
+            <box flex="100.0" id="right"/>
         </box>
+        <box height="5"/>
 
     </template>