Revision: 3359
http://vexi.svn.sourceforge.net/vexi/?rev=3359&view=rev
Author: clrg
Date: 2009-01-14 23:12:07 +0000 (Wed, 14 Jan 2009)
Log Message:
-----------
Several small changes + fixes bundled together
- fix whitespace edit reads
- provide v_init mechanism for container widgets for initalizing properties at
the end of the apply process
- fix progress bar layout
- a few other less noteworthy trivial updates
Modified Paths:
--------------
trunk/widgets/org.vexi.widgets/src/org/vexi/lib/layout/container.t
trunk/widgets/org.vexi.widgets/src/org/vexi/lib/text/word.t
trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/cell.t
trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/textfield.t
trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/cell.t
trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/check.t
trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/focusborder.t
trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/item.t
trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/menuitem.t
trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/option.t
trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/progressbar.t
trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/radio.t
trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/submenu.t
trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/textfield.t
trunk/widgets/org.vexi.widgets/src/vexi/widget/progressbar.t
trunk/widgets/org.vexi.widgets/src_vunit/testutil.t
Added Paths:
-----------
trunk/widgets/org.vexi.widgets/src_vunit/test/widget/datefield.t
Modified: trunk/widgets/org.vexi.widgets/src/org/vexi/lib/layout/container.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src/org/vexi/lib/layout/container.t
2009-01-14 21:19:18 UTC (rev 3358)
+++ trunk/widgets/org.vexi.widgets/src/org/vexi/lib/layout/container.t
2009-01-14 23:12:07 UTC (rev 3359)
@@ -38,19 +38,13 @@
if (thisbox.v_fillbox and v_fillbox!=thisbox) {
rdt..addRedirect(thisbox, v_fillbox, "fill", "tile");
}
- if (thisbox.v_textbox) {
- if (v_textbox!=thisbox)
+ if (thisbox.v_textbox and v_textbox!=thisbox) {
rdt..addRedirect(thisbox, v_textbox, "font", "fontsize",
"text", "textcolor");
- // do not auto-manage textalign i.e. edit widgets
- if (thisbox.v_textbox_managed)
- rdt..addRedirect(thisbox, v_textbox, "textalign");
- // redirect textalign property to v_textbox.align
- else {
- if (thisbox.textalign) v_textbox.align = textalign;
- thisbox.textalign ++= static.textalignRead;
- thisbox.textalign ++= static.textalignWrite;
- }
}
+ // initialize properties
+ if (thisbox.v_init!=null) {
+ for (var p in v_init) thisbox[p] = v_init[p];
+ }
}; // end
</ui:box>
Modified: trunk/widgets/org.vexi.widgets/src/org/vexi/lib/text/word.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src/org/vexi/lib/text/word.t 2009-01-14
21:19:18 UTC (rev 3358)
+++ trunk/widgets/org.vexi.widgets/src/org/vexi/lib/text/word.t 2009-01-14
23:12:07 UTC (rev 3359)
@@ -126,7 +126,7 @@
/** return textual content from internal text-box */
static.textRead = function() {
if (trapee.chartype == 0) {
- var l = trapee.text.length;
+ var l = cascade.length;
var r = "";
for (var i=0; l>i; i+=4) r += tabchar;
return r;
@@ -157,7 +157,7 @@
/** handle textcolor using psuedonym wordcolor */
static.wordcolorWrite = function(v) {
cascade = v;
- trapee.wordcolorset = v==null;
+ trapee.wordcolorset = v!=null;
if (!trapee.highlight) trapee.textcolor = trapee.wordcolor;
}
Modified: trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/cell.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/cell.t
2009-01-14 21:19:18 UTC (rev 3358)
+++ trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/cell.t
2009-01-14 23:12:07 UTC (rev 3359)
@@ -13,6 +13,12 @@
thisbox.v_container ++= static.containerWrite;
</ui:box>
+ /** used to forward properties to v_content[0] */
+ static.forwardToInner = function(v) {
+ cascade = v;
+ trapee[0][trapname] = v;
+ }
+
/** set up cell to handle incoming type */
static.containerWrite = function(v) {
cascade = v;
@@ -21,11 +27,15 @@
+ vexi.ui.font.height(t.font, t.fontsize, "dy");
t[0] = vexi.box;
t.v_textbox = t[0];
- t.v_content.align = "left";
- t.v_content.layout = "place";
+ var c = t.v_content;
+ c.align = "left";
+ c.layout = "place";
+ c.align ++= static.forwardToInner;
+ c.orient ++= static.forwardToInner;
switch (t.datatype) {
case "bool":
case "boolean":
+ c.align = "center";
t[0].shrink = true;
t[0].fill = theme.image.check;
t.selected ++= static.toggleSelectWrite;
Modified: trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/textfield.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/textfield.t
2009-01-14 21:19:18 UTC (rev 3358)
+++ trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/textfield.t
2009-01-14 23:12:07 UTC (rev 3359)
@@ -16,6 +16,7 @@
thisbox.shadowtext = "";
thisbox.value = "";
thisbox.th_shadowtext;
+ thisbox.th_shadowwrap;
KeyPressed ++= static.keypressEvent;
password ++= static.passwordWrite;
@@ -106,7 +107,7 @@
// normal textfield input
} else {
cascade = v;
- trapee.th_shadowtext.display = edit.text == "";
+ trapee.th_shadowwrap.display = edit.text == "";
}
}
@@ -129,7 +130,7 @@
static.textWrite = function(v) {
var f = trapee.v_field;
// only show shadowtext if field is empty
- f.th_shadowtext.display = (v == "" or v == null);
+ f.th_shadowwrap.display = (v == "" or v == null);
// hide text from user for passfields
if (f.password) {
var str = "";
Modified: trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/cell.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/cell.t
2009-01-14 21:19:18 UTC (rev 3358)
+++ trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/cell.t
2009-01-14 23:12:07 UTC (rev 3359)
@@ -6,5 +6,10 @@
<author>Charles Goodwin</author>
</meta:doc>
- <cell padding="2" textalign="left" />
+ <cell>
+ thisbox.v_init = static.cellinit;
+ </cell>
+
+ static.cellinit = { align:"left", layout:"place", padding:2 };
+
</vexi>
Modified: trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/check.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/check.t
2009-01-14 21:19:18 UTC (rev 3358)
+++ trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/check.t
2009-01-14 23:12:07 UTC (rev 3359)
@@ -7,7 +7,7 @@
</meta:doc>
<lib:check />
- <ui:box redirect=":$content" margin="3" padding="0 5" shrink="true"
textalign="left">
+ <ui:box redirect=":$content" shrink="true">
<focusborder id="focus">
<bevel align="center" form="down" width="14" height="14">
<ui:box id="bg" fill="white" layout="place">
@@ -17,7 +17,8 @@
<ui:box id="content" />
</focusborder>
- thisbox.th_bg = $bg;
+ thisbox.v_init = static.checkinit;
+ thisbox.th_bg = $bg;
thisbox.th_check = $check;
thisbox.th_focus = $focus;
@@ -31,6 +32,8 @@
</ui:box>
+ static.checkinit = { margin:3, padding:"0 5", align:"left" };
+
static.activeFunc = function(v) { trapee.th_bg.fill = "#d4d0c8"; cascade =
v; }
static.mixedFunc = function(v) {
Modified:
trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/focusborder.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/focusborder.t
2009-01-14 21:19:18 UTC (rev 3358)
+++ trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/focusborder.t
2009-01-14 23:12:07 UTC (rev 3359)
@@ -1,6 +1,7 @@
<!-- Copyright 2008 - see COPYING for details [LGPL] -->
-<vexi xmlns:ui="vexi://ui" xmlns:meta="vexi://meta" xmlns="vexi.theme">
+<vexi xmlns:ui="vexi://ui" xmlns:meta="vexi://meta" xmlns="vexi.theme"
+ xmlns:rdt="vexi.util.redirect">
<meta:doc>
<author>Charles Goodwin</author>
</meta:doc>
@@ -24,7 +25,7 @@
$w.display = v;
}
- vexi..vexi.util.redirect..addRedirect(thisbox, $content, "orient",
"layout");
+ rdt..addRedirect(thisbox, $content, "align", "orient", "layout");
</ui:box>
Modified: trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/item.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/item.t
2009-01-14 21:19:18 UTC (rev 3358)
+++ trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/item.t
2009-01-14 23:12:07 UTC (rev 3359)
@@ -5,11 +5,13 @@
<author>Charles Goodwin</author>
</meta:doc>
- <item />
- <ui:box padding="3" textalign="left">
+ <item>
+ thisbox.v_init = static.iteminit;
thisbox.selected ++= static.selectWrite;
- </ui:box>
+ </item>
+ static.iteminit = { padding:3, align:"left" };
+
static.selectWrite = function(v) {
cascade = v;
if (trapee.selected) {
Modified: trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/menuitem.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/menuitem.t
2009-01-14 21:19:18 UTC (rev 3358)
+++ trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/menuitem.t
2009-01-14 23:12:07 UTC (rev 3359)
@@ -6,13 +6,14 @@
</meta:doc>
<menuitem />
- <ui:box redirect=":$content" margin="0" padding="2 3" textalign="left"
vshrink="true">
+ <ui:box redirect=":$content" vshrink="true">
<ui:box width="22" height="20">
<ui:box id="icon" shrink="true" />
</ui:box>
<ui:box id="content" />
<ui:box id="mnemonic" shrink="true" />
+ thisbox.v_init = static.menuinit;
thisbox.th_icon = $icon;
thisbox.enabled ++= static.enableWrite;
@@ -20,6 +21,8 @@
</ui:box>
+ static.menuinit = { padding:"2 3", align:"left" };
+
static.enableWrite = function(v) {
cascade = v;
trapee.textcolor = trapee.enabled ? "black" : "#888888";
Modified: trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/option.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/option.t
2009-01-14 21:19:18 UTC (rev 3358)
+++ trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/option.t
2009-01-14 23:12:07 UTC (rev 3359)
@@ -8,7 +8,7 @@
<lib:widget.option redirect=":$content" margin="3" maxlistheight="160"
vshrink="true">
<bevel form="down">
- <focusborder id="focus" align="topleft" fill="white"
layout="place">
+ <focusborder id="focus" align="left" fill="white" layout="place">
<lib:layout.pad id="pad" padding="3">
<ui:box id="output" align="left" />
</lib:layout.pad>
Modified:
trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/progressbar.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/progressbar.t
2009-01-14 21:19:18 UTC (rev 3358)
+++ trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/progressbar.t
2009-01-14 23:12:07 UTC (rev 3359)
@@ -6,38 +6,65 @@
<author>Chares Goodwin</author>
</meta:doc>
- <bevel redirect=":$content" align="left" form="thindown" layout="layer"
margin="5" padding="5" vshrink="true">
- <ui:box id="content" />
- <ui:box id="bar" align="left" fill="#d4d0c8" layout="place">
- <lay:pad id="barpad">
- <ui:box id="barmsg" align="left" textcolor="white" />
+ <bevel redirect=":$content" align="left" form="thindown" margin="5"
padding="3" vshrink="true">
+ <ui:box align="left" layout="layer">
+ <ui:box id="content" />
+ <lay:pad id="bar" fill="darkblue" padding="3" width="0">
+ <ui:box id="barmsg" align="left" layout="place"
textcolor="white" />
</lay:pad>
</ui:box>
+ thisbox.th_bar = $bar;
+ thisbox.th_barmsg = $barmsg;
+ thisbox.th_content = $content;
+ thisbox.v_init = static.barinit;
+
thisbox.amount = 0;
thisbox.total = -1;
thisbox.percent = 0;
thisbox.units = null;
- var update = function() {
- $barpad.padding = padding;
- if (total!=-1) {
- $bar.width = vexi.math.ceil((amount/total)*$content.width);
- var newpercent = vexi.math.floor((amount/total)*100)+"%";
- var msg = newpercent+" - "+amount +" / "+total;
- if (units!=null) msg += units;
- $barmsg.text = msg;
- text = msg;
- } else {
- text = amount+(units==null?"":units);
- }
- };
+ thisbox.amount ++= static.amountWrite;
- thisbox.amount ++= function(v) {
- cascade = v;
- update();
- };
+ // FIXME: doesn't invoke updateSize
+ // FIXME: padding traps don't cascade
+ thisbox.paddingtop ++= static.paddingWrite;
+ thisbox.paddingleft ++= static.paddingWrite;
+ thisbox.paddingright ++= static.paddingWrite;
+ thisbox.paddingbottom ++= static.paddingWrite;
+ thisbox.font ++= static.updateSize;
+ thisbox.fontsize ++= static.updateSize;
+ thisbox.v_container ++= static.updateSize;
+
</bevel>
+
+ static.barinit = { align:"left", layout:"place" };
+
+ static.amountWrite = function(v) {
+ cascade = v;
+ if (trapee.total!=-1) {
+ trapee.th_bar.width =
vexi.math.ceil((v/trapee.total)*trapee.th_content.width);
+ var newpercent = vexi.math.floor((v/trapee.total)*100)+"%";
+ var msg = newpercent+" - "+v +" / "+trapee.total;
+ if (trapee.units!=null) msg += trapee.units;
+ trapee.th_barmsg.text = msg;
+ trapee.text = msg;
+ } else {
+ trapee.text = v+(trapee.units==null?"":trapee.units);
+ }
+ }
+
+ /** keep overlay text padding the same as background text */
+ static.paddingWrite = function(v) { trapee.th_bar[trapname] = v; return; }
+
+ /** keep overlay text attributes in sync with background text */
+ static.updateSize = function(v) {
+ cascade = v;
+ trapee.th_barmsg[trapname] = v;
+ trapee.th_content.minheight = trapee.paddingtop + trapee.paddingbottom
+ + vexi.ui.font.height(trapee.font, trapee.fontsize, "dy");
+ }
+
</vexi>
\ No newline at end of file
Modified: trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/radio.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/radio.t
2009-01-14 21:19:18 UTC (rev 3358)
+++ trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/radio.t
2009-01-14 23:12:07 UTC (rev 3359)
@@ -2,8 +2,12 @@
<vexi xmlns:ui="vexi://ui" xmlns:meta="vexi://meta" xmlns="vexi.theme"
xmlns:lib="org.vexi.lib.widget">
+ <meta:doc>
+ <author>Charles Goodwin</author>
+ </meta:doc>
+
<lib:radio />
- <ui:box redirect=":$content" margin="3" padding="0 5" textalign="left"
vshrink="true">
+ <ui:box redirect=":$content" vshrink="true">
<focusborder id="focus">
<ui:box width="14" height="14" layout="place" shrink="true">
<ui:box id="bg" shrink="true" />
@@ -12,6 +16,7 @@
<ui:box id="content" />
</focusborder>
+ thisbox.v_init = static.radioinit;
thisbox.th_bg = $bg;
thisbox.th_focus = $focus;
thisbox.th_radio = $radio;
@@ -26,6 +31,8 @@
</ui:box>
+ static.radioinit = { margin:3, padding:"0 5", align:"left" };
+
static.activeFunc = function(v) {
cascade = v;
trapee.th_bg.fill = .image.radiobg_active;
Modified: trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/submenu.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/submenu.t
2009-01-14 21:19:18 UTC (rev 3358)
+++ trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/submenu.t
2009-01-14 23:12:07 UTC (rev 3359)
@@ -7,7 +7,7 @@
</meta:doc>
<lib:widget.submenu />
- <ui:box redirect=":$content" textalign="left" vshrink="true">
+ <ui:box redirect=":$content" vshrink="true">
<lib:layout.pad padding="2 3">
<ui:box width="16" height="16" shrink="true">
<ui:box id="icon" />
@@ -20,11 +20,12 @@
<ui:box id="content" orient="vertical" fill="#d4d0c8" />
</bevel>
- thisbox.th_icon = $icon;
+ thisbox.th_icon = $icon;
thisbox.th_arrow = $arrow;
thisbox.v_popbox = $popbox;
+ thisbox.v_init = static.submenuinit;
- thisbox.popup ++= static.popupWrite;
+ thisbox.popup ++= static.popupWrite;
thisbox.selected ++= static.selectWrite;
thisbox.v_container ++= function(v) {
@@ -34,6 +35,8 @@
</ui:box>
+ static.submenuinit = { align:"left" };
+
static.popupWrite = function(v) {
var t = trapee;
var d = t.surface.frame.distanceto(t);
Modified: trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/textfield.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/textfield.t
2009-01-14 21:19:18 UTC (rev 3358)
+++ trunk/widgets/org.vexi.widgets/src/org/vexi/theme/classic/textfield.t
2009-01-14 23:12:07 UTC (rev 3359)
@@ -10,12 +10,15 @@
<bevel redirect=":$content" form="down" margin="3" padding="3"
vshrink="true">
<ui:box id="inset" align="left" layout="place">
<ui:box id="content" />
- <lib:layout.pad id="pad" align="left" padding="3" vshrink="true">
- <ui:box id="shadow" shrink="true" textcolor="#999999" />
+ <lib:layout.pad id="shadowpad" padding="3" vshrink="true">
+ <ui:box align="left">
+ <ui:box id="shadow" align="left" shrink="true"
textcolor="#999999" />
+ </ui:box>
</lib:layout.pad>
</ui:box>
thisbox.th_shadowtext = $shadow;
+ thisbox.th_shadowwrap = $shadowpad;
thisbox.th_viewport = $inset;
thisbox.th_view = $content;
thisbox.v_prevfill = .settings..fill;
Modified: trunk/widgets/org.vexi.widgets/src/vexi/widget/progressbar.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src/vexi/widget/progressbar.t
2009-01-14 21:19:18 UTC (rev 3358)
+++ trunk/widgets/org.vexi.widgets/src/vexi/widget/progressbar.t
2009-01-14 23:12:07 UTC (rev 3359)
@@ -12,4 +12,6 @@
<margin />
<theme:progressbar />
+ <pad />
+ <container />
</vexi>
\ No newline at end of file
Added: trunk/widgets/org.vexi.widgets/src_vunit/test/widget/datefield.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src_vunit/test/widget/datefield.t
(rev 0)
+++ trunk/widgets/org.vexi.widgets/src_vunit/test/widget/datefield.t
2009-01-14 23:12:07 UTC (rev 3359)
@@ -0,0 +1,23 @@
+<vexi xmlns:meta="vexi://meta" xmlns:ui="vexi://ui" xmlns="vexi.widget">
+ <meta:doc>
+ <author>Charles Goodwin</author>
+ </meta:doc>
+
+ var vunit = vexi..vexi.test.vunit;
+
+ static.test = function() {
+ /// Quick Suite
+ var suite = {};
+ suite.testQ1 = function() {
+ var b = .datefield(vexi.box);
+ b.value = "2008-01-05";
+ assert("2008-01-05", b.value);
+ };
+ suite.name = "vexi.widget.datefield Tests";
+ return suite;
+ };
+
+ <surface>
+ static.test().testQ1();
+ </surface>
+</vexi>
\ No newline at end of file
Modified: trunk/widgets/org.vexi.widgets/src_vunit/testutil.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src_vunit/testutil.t 2009-01-14 21:19:18 UTC
(rev 3358)
+++ trunk/widgets/org.vexi.widgets/src_vunit/testutil.t 2009-01-14 23:12:07 UTC
(rev 3359)
@@ -1,10 +1,13 @@
<vexi xmlns:meta="vexi://meta" xmlns:ui="vexi://ui">
- <meta:doc> Author: Mike </meta:doc>
-
- static.create = function(template, props){
- var r = template?template(vexi.box):vexi.box;
- for(var k in props){ r[k] = props[k]; }
+ <meta:doc>
+ <author>Mike Goodwin</author>
+ </meta:doc>
+
+ static.create = function(template, props) {
+ var r = template ? template(vexi.box) : vexi.box;
+ for (var k in props) { r[k] = props[k]; }
return r;
};
+
<ui:box/>
</vexi>
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Vexi-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/vexi-svn