Revision: 4731
http://sourceforge.net/p/vexi/code/4731
Author: clrg
Date: 2014-09-11 23:50:27 +0000 (Thu, 11 Sep 2014)
Log Message:
-----------
Fix vexi.layout.ratio / add poke
Modified Paths:
--------------
branches/vexi3/org.vexi-vexi.widgets/src_main/org/vexi/lib/layout/ratio.t
Added Paths:
-----------
branches/vexi3/org.vexi-vexi.widgets/src_poke/poke/layout/ratio.t
Modified:
branches/vexi3/org.vexi-vexi.widgets/src_main/org/vexi/lib/layout/ratio.t
===================================================================
--- branches/vexi3/org.vexi-vexi.widgets/src_main/org/vexi/lib/layout/ratio.t
2014-09-10 22:57:29 UTC (rev 4730)
+++ branches/vexi3/org.vexi-vexi.widgets/src_main/org/vexi/lib/layout/ratio.t
2014-09-11 23:50:27 UTC (rev 4731)
@@ -1,11 +1,34 @@
-<!-- Copyright 2013 - see COPYING for details [LGPL] -->
+<!-- Copyright 2014 - see COPYING for details [LGPL] -->
-<vexi xmlns:ui="vexi://ui" xmlns:role="org.vexi.lib.role">
+<vexi xmlns:ui="vexi://ui"
+ xmlns:role="org.vexi.lib.role">
+
<role:polarizable />
- <ui:box>
+ <ui:Box>
var totalRatio = 0;
+
+ const resizeChildren = function() {
+ var factor = thisbox[dim] / totalRatio;
+ var remainder = 0;
+ var totalSize = 0;
+ for (var i,child in thisbox) {
+ if (child.display) {
+ var rawSize = (child.ratio * factor) + remainder;
+ var actSize = vexi.math.round(rawSize);
+ remainder = rawSize - actSize;
+ child[dim] = actSize;
+ totalSize += actSize;
+ }
+ }
+ if (totalSize != thisbox[dim]) {
+ thisbox[numchildren-1][dim] += (thisbox[dim] - totalSize);
+ }
+ }
+
const updateTotal = function(v) {
+ if (typeof v != "number")
+ throw "ratio must be a number";
var oldRatio = trapee.ratio;
cascade = v==null?1:v;
totalRatio = totalRatio - oldRatio + trapee.ratio;
@@ -23,25 +46,24 @@
totalRatio -= v.ratio;
}
cascade = v;
+ // resize if necessary
+ if (trapee[dim]>0) resizeChildren();
}
- thisbox.Resize ++= function(v) {
- var factor = thisbox[dim] / totalRatio;
- var remainder = 0;
- var totalSize = 0;
- for (var i,child in thisbox) {
- if (child.display) {
- var rawSize = (child.ratio * factor) + remainder;
- var actSize = vexi.math.round(rawSize);
- remainder = rawSize - actSize;
- child[dim] = actSize;
- totalSize += actSize;
- }
- }
- if (totalSize != thisbox[dim]) {
- thisbox[numchildren-1][dim] += (thisbox[dim] - totalSize);
- }
+ const invokeResize = function(v) {
+ cascade = v;
+ resizeChildren();
}
- </ui:box>
+ thisbox[dim] ++= invokeResize;
+
+ thisbox.orient ++= function(v) {
+ trapee[dim] --= invokeResize;
+ casacde = v;
+ trapee[dim] ++= invokeResize;
+ // resize if necessary
+ if (trapee[dim]>0) resizeChildren();
+ }
+
+ </ui:Box>
</vexi>
Added: branches/vexi3/org.vexi-vexi.widgets/src_poke/poke/layout/ratio.t
===================================================================
--- branches/vexi3/org.vexi-vexi.widgets/src_poke/poke/layout/ratio.t
(rev 0)
+++ branches/vexi3/org.vexi-vexi.widgets/src_poke/poke/layout/ratio.t
2014-09-11 23:50:27 UTC (rev 4731)
@@ -0,0 +1,28 @@
+<!-- public domain -->
+
+<vexi xmlns:ui="vexi://ui" xmlns="vexi.layout">
+ <ui:box orient="vertical" fill="white">
+ <ui:box height="20" />
+ <ratio>
+ <ui:Box text="ratio=1" fill="red" />
+ <ui:Box text="ratio=2" ratio="2" fill="blue" />
+ <ui:Box text="ratio=1" fill="green" />
+ </ratio>
+ <ui:box height="20" />
+ <ratio>
+ <ui:Box text="ratio=50" ratio="50" fill="red" />
+ <ui:Box text="ratio=25" ratio="25" fill="blue" />
+ <ui:Box text="ratio=25" ratio="25" fill="green" />
+ </ratio>
+ <ui:box height="20" />
+ <ratio>
+ <ui:Box text="ratio=30" ratio="30" fill="red" />
+ <ui:Box text="ratio=60" ratio="60" fill="blue" />
+ <ui:Box text="ratio=90" ratio="90" fill="green" />
+ </ratio>
+ <ui:box height="20" />
+
+ vexi.ui.frame = thisbox;
+
+ </ui:box>
+</vexi>
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Want excitement?
Manually upgrade your production database.
When you want reliability, choose Perforce
Perforce version control. Predictably reliable.
http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
_______________________________________________
Vexi-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/vexi-svn