Revision: 4798 http://sourceforge.net/p/vexi/code/4798 Author: clrg Date: 2015-05-23 14:00:47 +0000 (Sat, 23 May 2015) Log Message: ----------- Port splitpane
Added Paths: ----------- branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/lib/gui/Divider.t branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/lib/gui/Splitpane.t branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/Divider.t branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/Splitpane.t branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/vexi/gui/Splitpane.t branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_poke/poke/gui/Slider.t branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_poke/poke/gui/Splitpane.t Removed Paths: ------------- branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/lib/widget/divider.t branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/lib/widget/splitpane.t branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/divider.t branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/splitpane.t branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/vexi/widget/splitpane.t Copied: branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/lib/gui/Divider.t (from rev 4785, branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/lib/widget/divider.t) =================================================================== --- branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/lib/gui/Divider.t (rev 0) +++ branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/lib/gui/Divider.t 2015-05-23 14:00:47 UTC (rev 4798) @@ -0,0 +1,13 @@ +<!-- Copyright 2015 - see COPYING for details [LGPL] --> + +<vexi xmlns:meta="vexi://meta" + xmlns="org.vexi.lib.role"> + + <meta:doc> + <author>Charles Goodwin</author> + </meta:doc> + + <Draggable> + thisbox.active = false; + </Draggable> +</vexi> Copied: branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/lib/gui/Splitpane.t (from rev 4785, branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/lib/widget/splitpane.t) =================================================================== --- branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/lib/gui/Splitpane.t (rev 0) +++ branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/lib/gui/Splitpane.t 2015-05-23 14:00:47 UTC (rev 4798) @@ -0,0 +1,210 @@ +<!-- Copyright 2015 - see COPYING for details [LGPL] --> + +<vexi xmlns:meta="vexi://meta" + xmlns:theme="vexi.theme" + xmlns="org.vexi.lib.role"> + + <meta:doc> + <author>Charles Goodwin</author> + </meta:doc> + + <Polarized> + + thisbox.liveresize = true; // whether to update pane sizes instantly + thisbox.markeroffset = 0; // offset for centering marker + thisbox.master; // gets the slack + thisbox.th_marker; // marker used when liveresize is false + thisbox.v_content; // conceptually contains children + thisbox.v_holding; // where children are actually contained + + // horizontal splitpane: + // .-------. .-------. + // | a |d| b | + // '-------' '-------' + var cur_d; // current divder + var cur_a; // current child a + var cur_b; // current child b + var dim_a; // current width or height of a + var dim_b; // current width or height of b + var tmp_a; // temporary variable for a values + var tmp_b; // temporary variable for b values + + var max = function(a, b) { return a>b ? a : b; } + var min = function(a, b) { return b>a ? a : b; } + + /** integration with draggable */ + var dragUpdate = function(d) { + var shift = d[pos]; + // constrain the shift to respect content and max sizes + // of non-master children and the size of the splitpane + /*if (cur_a!=master)*/ + shift = + max(cur_a[0][contentdim] - dim_a, + min(cur_a[0][maxdim] - dim_a, shift)); + /*if (cur_b!=master)*/ + shift = + min(dim_b - cur_d[dim] - cur_b[0][contentdim], + max(dim_b - cur_d[dim] - cur_b[0][maxdim], shift)); + + if (liveresize) { + // resize non-master children + if (cur_a!=master) + cur_a[dim] = dim_a + shift; + if (cur_b!=master) + cur_b[dim] = dim_b - shift; + } else { + // store sizes for later application + tmp_a = dim_a + shift; + tmp_b = dim_b - shift; + th_marker[pos] = cur_a[pos] + tmp_a + markeroffset; + } + cascade = d; + } + + /** drops moveEvent on Release */ + var dragFinish = function(v) { + cascade = v; + cur_d.active = false; + th_marker.display = false; + if (!liveresize) { + if (cur_a!=master) + cur_a[dim] = tmp_a; + if (cur_b!=master) + cur_b[dim] = tmp_b; + } + } + + /** initiate x dragging on Press */ + var dragStart = function(v) { + cascade = v; + // make sure we always have a master + if (!master) { + var n = v_holding.numchildren; + for (var i=0; n>i; i+=2) { + if (!v_holding[i][shr]) { + master = v_holding[i]; + break; + } + } + } + // no volunteers? conscript! + if (!master) master = v_holding[0]; + // the current divider being moved + var cur = v_holding.indexof(trapee); + cur_d = trapee; + cur_d.active = true; + // either side of the divider + cur_a = v_holding[cur-1]; + cur_b = v_holding[cur+1]; + // our starting dimensions + dim_a = cur_a[dim]; + dim_b = cur_b[dim]; + // used for !liveresize + tmp_a = dim_a; + tmp_b = dim_b; + // marker provides visual feedback if !liveresize + th_marker.display = !liveresize; + if (liveresize) + th_marker[pos] = cur_a[pos] + cur_a[dim] + markeroffset; + } + + /** ensure master is not constrained */ + master ++= function(v) { + cascade = v; + if (master) { + master[mindim] = 0; + master[maxdim] = vexi.ui.maxdim; + master[shr] = false; + } + } + + /** returns the relative index of v */ + var getIndexOf = function(v) { + var i = v_holding.indexof(v); + return 0>i ? i/2 : i; + } + + /** update dividers when orient changes */ + orient ++= function(v) { + cascade = v; + v_holding.orient = v; + th_marker.hshrink = (v == "h" or v == "horizontal"); + th_marker.vshrink = !th_marker.hshrink; + var fls = flip(shr); + for (var i=0; v_holding.numchildren>i; i++) { + if (i%2) { + v_holding[i][shr] = true; + v_holding[i][fls] = false; + } else { + var shell = v_holding[i]; + shell[fls] = false; + shell[shr] = shell[0][shr]; + } + } + } + + /** set up Children trap */ + v_container ++= function(v) { + cascade = v; + v_content.display = false; + v_content.indexof ++= function() { return getIndexOf; } + v_content.numchildren ++= function() { + var n = v_holding.numchildren; + return n == 0 ? 0 : (n+1)/2; + } + + /** children are really stored in v_holding and separated by dividers */ + v_content.Children ++= function() { return v_holding[arguments.trapname*2][0]; } + + /** set up introduced dividers */ + v_content.Children ++= function(c) { + // useful through this trap + var i = arguments.trapname; + if (c != null) { + // children are placed inside a shell box which can + // have dimensions altered without causing issues + + var div = null; + if (v_holding.numchildren>0) { + // set up divider + div = new theme.Divider(); + div[shr] = true; + div[flip(shr)] = false; + div.dragStart ++= dragStart; + div.dragFinish ++= dragFinish; + div.dragUpdate ++= dragUpdate; + } + // assign new child and divider to holding + if (div and i!=0) + v_holding[i*2-1] = div; + var shell = vexi.box; + shell[0] = c; + var react = function(v) { + cascade = v; + if (trapname == shr) + shell[shr] = v; + } + c.hshrink ++= react; + c.vshrink ++= react; + shell[shr] = c[shr]; + v_holding[i*2] = shell; + if (div and i==0) + v_holding[1] = div; + // REMARK - not kept in v_content so no cascade + } else { + // remove both child and accompanying dividor + if (i==0 and v_holding.numchildren>1) + v_holding[1] = null; + v_holding[i*2] = null; + if (i!=0) + v_holding[i*2-1] = null; + } + return; + } + + // prevent orient redirect by layout.container + v_content = null; + } + + </Polarized> +</vexi> Deleted: branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/lib/widget/divider.t =================================================================== --- branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/lib/widget/divider.t 2015-05-23 12:33:23 UTC (rev 4797) +++ branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/lib/widget/divider.t 2015-05-23 14:00:47 UTC (rev 4798) @@ -1,11 +0,0 @@ -<!-- Copyright 2009 - see COPYING for details [LGPL] --> - -<vexi xmlns:ui="vexi://ui" xmlns:meta="vexi://meta" xmlns="org.vexi.lib.role"> - <meta:doc> - <author>Charles Goodwin</author> - </meta:doc> - - <draggable> - thisbox.active = false; - </draggable> -</vexi> Deleted: branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/lib/widget/splitpane.t =================================================================== --- branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/lib/widget/splitpane.t 2015-05-23 12:33:23 UTC (rev 4797) +++ branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/lib/widget/splitpane.t 2015-05-23 14:00:47 UTC (rev 4798) @@ -1,206 +0,0 @@ -<!-- Copyright 2012 - see COPYING for details [LGPL] --> - -<vexi xmlns:ui="vexi://ui" xmlns:meta="vexi://meta" xmlns="org.vexi.lib.role"> - <meta:doc> - <author>Charles Goodwin</author> - </meta:doc> - - <polarizable /> - <ui:box> - - thisbox.liveresize = true; // whether to update pane sizes instantly - thisbox.markeroffset = 0; // offset for centering marker - thisbox.master; // gets the slack - thisbox.th_marker; // marker used when liveresize is false - thisbox.v_content; // conceptually contains children - thisbox.v_holding; // where children are actually contained - - // horizontal splitpane: - // .-------. .-------. - // | a |d| b | - // '-------' '-------' - var cur_d; // current divder - var cur_a; // current child a - var cur_b; // current child b - var dim_a; // current width or height of a - var dim_b; // current width or height of b - var tmp_a; // temporary variable for a values - var tmp_b; // temporary variable for b values - - var max = function(a, b) { return a>b ? a : b; } - var min = function(a, b) { return b>a ? a : b; } - - /** integration with draggable */ - var dragUpdate = function(d) { - var shift = d[pos]; - // constrain the shift to respect content and max sizes - // of non-master children and the size of the splitpane - /*if (cur_a!=master)*/ shift = - max(cur_a[0][contentdim] - dim_a, - min(cur_a[0][maxdim] - dim_a, shift)); - /*if (cur_b!=master)*/ shift = - min(dim_b - cur_d[dim] - cur_b[0][contentdim], - max(dim_b - cur_d[dim] - cur_b[0][maxdim], shift)); - - if (liveresize) { - // resize non-master children - if (cur_a!=master) - cur_a[dim] = dim_a + shift; - if (cur_b!=master) - cur_b[dim] = dim_b - shift; - } else { - // store sizes for later application - tmp_a = dim_a + shift; - tmp_b = dim_b - shift; - th_marker[pos] = cur_a[pos] + tmp_a + markeroffset; - } - cascade = d; - } - - /** drops moveEvent on Release */ - var dragFinish = function(v) { - cascade = v; - cur_d.active = false; - th_marker.display = false; - if (!liveresize) { - if (cur_a!=master) - cur_a[dim] = tmp_a; - if (cur_b!=master) - cur_b[dim] = tmp_b; - } - } - - /** initiate x dragging on Press */ - var dragStart = function(v) { - cascade = v; - // make sure we always have a master - if (!master) { - var n = v_holding.numchildren; - for (var i=0; n>i; i+=2) { - if (!v_holding[i][shr]) { - master = v_holding[i]; - break; - } - } - } - // no volunteers? conscript! - if (!master) master = v_holding[0]; - // the current divider being moved - var cur = v_holding.indexof(trapee); - cur_d = trapee; - cur_d.active = true; - // either side of the divider - cur_a = v_holding[cur-1]; - cur_b = v_holding[cur+1]; - // our starting dimensions - dim_a = cur_a[dim]; - dim_b = cur_b[dim]; - // used for !liveresize - tmp_a = dim_a; - tmp_b = dim_b; - // marker provides visual feedback if !liveresize - th_marker.display = !liveresize; - if (liveresize) - th_marker[pos] = cur_a[pos] + cur_a[dim] + markeroffset; - } - - /** ensure master is not constrained */ - master ++= function(v) { - cascade = v; - if (master) { - master[mindim] = 0; - master[maxdim] = vexi.ui.maxdim; - master[shr] = false; - } - } - - /** returns the relative index of v */ - var getIndexOf = function(v) { - var i = v_holding.indexof(v); - return 0>i ? i/2 : i; - } - - /** update dividers when orient changes */ - orient ++= function(v) { - cascade = v; - v_holding.orient = v; - th_marker.hshrink = (v == "h" or v == "horizontal"); - th_marker.vshrink = !th_marker.hshrink; - var fls = flip(shr); - for (var i=0; v_holding.numchildren>i; i++) { - if (i%2) { - v_holding[i][shr] = true; - v_holding[i][fls] = false; - } else { - var shell = v_holding[i]; - shell[fls] = false; - shell[shr] = shell[0][shr]; - } - } - } - - /** set up Children trap */ - v_container ++= function(v) { - cascade = v; - v_content.display = false; - v_content.indexof ++= function() { return getIndexOf; } - v_content.numchildren ++= function() { - var n = v_holding.numchildren; - return n == 0 ? 0 : (n+1)/2; - } - - /** children are really stored in v_holding and separated by dividers */ - v_content.Children ++= function() { return v_holding[arguments.trapname*2][0]; } - - /** set up introduced dividers */ - v_content.Children ++= function(c) { - // useful through this trap - var i = arguments.trapname; - if (c != null) { - // children are placed inside a shell box which can - // have dimensions altered without causing issues - - var div = null; - if (v_holding.numchildren>0) { - // set up divider - div = new vexi..vexi.theme.divider(); - div[shr] = true; - div[flip(shr)] = false; - div.dragStart ++= dragStart; - div.dragFinish ++= dragFinish; - div.dragUpdate ++= dragUpdate; - } - // assign new child and divider to holding - if (div and i!=0) - v_holding[i*2-1] = div; - var shell = vexi.box; - shell[0] = c; - var react = function(v) { - cascade = v; - if (trapname == shr) - shell[shr] = v; - } - c.hshrink ++= react; - c.vshrink ++= react; - shell[shr] = c[shr]; - v_holding[i*2] = shell; - if (div and i==0) - v_holding[1] = div; - // REMARK - not kept in v_content so no cascade - } else { - // remove both child and accompanying dividor - if (i==0 and v_holding.numchildren>1) - v_holding[1] = null; - v_holding[i*2] = null; - if (i!=0) - v_holding[i*2-1] = null; - } - return; - } - - // prevent orient redirect by layout.container - v_content = null; - } - - </ui:box> -</vexi> Copied: branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/Divider.t (from rev 4785, branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/divider.t) =================================================================== --- branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/Divider.t (rev 0) +++ branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/Divider.t 2015-05-23 14:00:47 UTC (rev 4798) @@ -0,0 +1,22 @@ +<!-- Copyright 2015 - see COPYING for details [LGPL] --> + +<vexi xmlns:ui="vexi://ui" + xmlns:img="vexi.theme" + xmlns="org.vexi.lib.gui"> + + <Divider redirect="null" cursor="hand" vshrink="true"> + <ui:Box maxwidth="18" minwidth="6" maxheight="18" minheight="6"> + <ui:Box fill=":img.rivets" /> + </ui:Box> + + active ++= static.activeWrite; + Enter ++= static.enterWrite; + Leave ++= static.leaveWrite; + + </Divider> + + static.activeWrite = function(v) { cascade = v; trapee.fill = v ? "#6fff" : null; } + static.enterWrite = function(v) { cascade = v; trapee.fill = "#6fff"; } + static.leaveWrite = function(v) { cascade = v; if (!trapee.active) trapee.fill = null; } + +</vexi> Copied: branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/Splitpane.t (from rev 4785, branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/splitpane.t) =================================================================== --- branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/Splitpane.t (rev 0) +++ branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/Splitpane.t 2015-05-23 14:00:47 UTC (rev 4798) @@ -0,0 +1,19 @@ +<!-- Copyright 2015 - see COPYING for details [LGPL] --> + +<vexi xmlns:ui="vexi://ui" + xmlns="org.vexi.lib.gui"> + + <Splitpane redirect=":$content" align="topleft" layout="place"> + <ui:Box id="content" display="false" /> + <ui:Box id="holding" /> + <ui:Box id="marker" display="false" fill="black" hshrink="true" minwidth="2" minheight="2" /> + + thisbox.v_content = $content; + thisbox.v_holding = $holding; + thisbox.th_marker = $marker; + thisbox.markeroffset = 2; + + v_container = true; + + </Splitpane> +</vexi> Deleted: branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/divider.t =================================================================== --- branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/divider.t 2015-05-23 12:33:23 UTC (rev 4797) +++ branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/divider.t 2015-05-23 14:00:47 UTC (rev 4798) @@ -1,24 +0,0 @@ -<!-- Copyright 2011 - see COPYING for details [LGPL] --> - -<vexi xmlns:ui="vexi://ui" xmlns:meta="vexi://meta" - xmlns:lib="org.vexi.lib.widget" xmlns="vexi.theme"> - <meta:doc> - <author>Charles Goodwin</author> - </meta:doc> - - <lib:divider redirect="null" cursor="hand" vshrink="true"> - <ui:box maxwidth="18" minwidth="6" maxheight="18" minheight="6"> - <ui:box fill=":.image.rivets" /> - </ui:box> - - active ++= static.activeWrite; - Enter ++= static.enterWrite; - Leave ++= static.leaveWrite; - - </lib:divider> - - static.activeWrite = function(v) { cascade = v; trapee.fill = v ? "#6fff" : null; } - static.enterWrite = function(v) { cascade = v; trapee.fill = "#6fff"; } - static.leaveWrite = function(v) { cascade = v; if (!trapee.active) trapee.fill = null; } - -</vexi> Deleted: branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/splitpane.t =================================================================== --- branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/splitpane.t 2015-05-23 12:33:23 UTC (rev 4797) +++ branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/splitpane.t 2015-05-23 14:00:47 UTC (rev 4798) @@ -1,18 +0,0 @@ -<!-- Copyright 2011 - see COPYING for details [LGPL] --> - -<vexi xmlns:ui="vexi://ui" xmlns:meta="vexi://meta" xmlns="org.vexi.lib.widget"> - <meta:doc> - <author>Charles Goodwin</author> - </meta:doc> - - <splitpane redirect=":$content" align="topleft" layout="place"> - <ui:box id="content" display="false" /> - <ui:box id="holding" /> - <ui:box id="marker" display="false" fill="black" hshrink="true" minwidth="2" minheight="2" /> - - thisbox.v_holding = $holding; - thisbox.th_marker = $marker; - thisbox.markeroffset = 2; - - </splitpane> -</vexi> Copied: branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/vexi/gui/Splitpane.t (from rev 4785, branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/vexi/widget/splitpane.t) =================================================================== --- branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/vexi/gui/Splitpane.t (rev 0) +++ branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/vexi/gui/Splitpane.t 2015-05-23 14:00:47 UTC (rev 4798) @@ -0,0 +1,16 @@ +<!-- Copyright 2015 - see COPYING for details [LGPL] --> + +<vexi xmlns:meta="vexi://meta" + xmlns="vexi.theme"> + + <meta:doc> + <name>Splitpane</name> + <desc>A splitpane widget</desc> + <usage> + Wrap around templates, setting orient, and use dividors + in between each template. + </usage> + </meta:doc> + + <Splitpane /> +</vexi> Deleted: branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/vexi/widget/splitpane.t =================================================================== --- branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/vexi/widget/splitpane.t 2015-05-23 12:33:23 UTC (rev 4797) +++ branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_main/vexi/widget/splitpane.t 2015-05-23 14:00:47 UTC (rev 4798) @@ -1,18 +0,0 @@ -<!-- Copyright 2009 - see COPYING for details [LGPL] --> - -<vexi xmlns:ui="vexi://ui" xmlns:meta="vexi://meta" xmlns:theme="vexi.theme" - xmlns="org.vexi.lib.layout"> - <meta:doc> - <name>Splitpane</name> - <desc>A splitpane widget</desc> - <usage> - Wrap around templates, setting orient, and use dividors - in between each template. - </usage> - </meta:doc> - - <margin /> - <theme:splitpane /> - <pad /> - <container /> -</vexi> Copied: branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_poke/poke/gui/Slider.t (from rev 4785, branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_poke/poke/widgets/slider.t) =================================================================== --- branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_poke/poke/gui/Slider.t (rev 0) +++ branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_poke/poke/gui/Slider.t 2015-05-23 14:00:47 UTC (rev 4798) @@ -0,0 +1,21 @@ +<!-- public domain --> + +<vexi xmlns:ui="vexi://ui" xmlns="vexi.gui"> + <Surface /> + <ui:Box orient="vertical"> + <ui:Box> + <ui:Box align="right" text="Slider value: " /> + <ui:Box id="output" align="left" /> + </ui:Box> + <ui:Box> + <ui:Box /> + <Slider id="slider" minvalue="0" maxvalue="10" step="1" /> + <ui:Box /> + </ui:Box> + + $slider.value ++= function(v) { cascade = v; $output.text = v; } + + vexi.ui.frame = thisbox; + + </ui:Box> +</vexi> \ No newline at end of file Added: branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_poke/poke/gui/Splitpane.t =================================================================== --- branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_poke/poke/gui/Splitpane.t (rev 0) +++ branches/vexi3_integrated_layout/org.vexi-vexi.widgets/src_poke/poke/gui/Splitpane.t 2015-05-23 14:00:47 UTC (rev 4798) @@ -0,0 +1,16 @@ +<!-- public domain --> + +<vexi xmlns:ui="vexi://ui" xmlns:img="poke.image" xmlns="vexi.gui"> + <Surface /> + <ui:Box frameheight="200"> + <Splitpane> + <Bevel form="down" fill="white" /> + <Bevel form="down" fill="red" /> + </Splitpane> + <Splitpane orient="vertical"> + <Bevel form="down" fill="green" /> + <Bevel form="down" fill="blue" /> + </Splitpane> + 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. ------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y _______________________________________________ Vexi-svn mailing list Vexi-svn@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/vexi-svn