r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[!RebGUI] A lightweight alternative to VID

Kai
18-Dec-2007
[7062]
Ashley - what is the method of choice to temporarily disable/re-enable 
input widgets (fields, drop-lists, checks)  in code ?  Disable as 
in: do not allow focus or content manipulation.
Ashley
18-Dec-2007
[7063]
There isn't. These things are set when the widget is created. In 
the rare cases I've had to do this I just unview and redisplay ... 
not elegant but it works.
Graham
18-Dec-2007
[7064x3]
I just put widgets I need to disable into a sep panel and just hide 
the whole panel
or, just hide a set of widgets as needed
ghosting is not possible ... is it better?  who knows
btiffin
18-Dec-2007
[7067]
Umm, re disable;  Doesn't  on-focus [false]  do what Kaj wants here 
- kinda - mostly?   The widget is still on screen but you can't click 
on or tab to it.
Graham
18-Dec-2007
[7068]
I think it's preferable to have some type of visual clue that the 
behaviour has changed.
btiffin
18-Dec-2007
[7069]
The code that determines true/false focus could also change the color 
perhaps.  But on-focus does not write-protect the contents from code 
re the "content manipulation' part, so you'd need to write a modifier 
layer (and promise yourself to not use direct  access ... ever) that 
also honoured the focus flag.


Being me, I probably didn't think up and down the affect chain, but 
I use the on-focus for user entered key fields.  Once set and verified 
ok you can't enter the field anymore (with the background color change). 
 I played with on-unfocus locking but found the behaviour of getting 
stuck in a field as too irritating so that logic had to move to become 
an extra step in another func.


Umm, not a dis or anything Ashley;  on-unfocus is just one of those 
features I'd need a strong reason to include in a user interface 
- nice that it is there and all.  :)
Kai
19-Dec-2007
[7070x3]
Brian ~ do you have a snippet for me demonstrating how you do things?
How can I determine the type of a widget (i.e. field vs button) in 
code? I don't see a 'kind or 'type attribute...
Oops - disregard that last one -just found it
Ashley
19-Dec-2007
[7073]
This code shows how to implement dynamic 'info for 'field and 'area:

display "" [
	a: field
	b: field
	button [
		alter b/options 'info
		b/color: either find b/options 'info [
			b/action: make b/action [
				on-focus: make function! [face] [false]
			]
			ctx-rebgui/colors/widget
		][
			b/action: make b/action [
				on-focus: make function! [face] [true]
			]
			ctx-rebgui/colors/edit
		]
		show b
	]
]
Pekr
19-Dec-2007
[7074]
Ashley - any news on Robert's RebGUI enhancements integration?
Kai
19-Dec-2007
[7075x2]
Is there a spot where I can store values I want to restore later 
- like user-data in VID?
per widget that is...
Ashley
19-Dec-2007
[7077x2]
widget/init ... which is set to none! after the widget is displayed 
and is not referenced again.
grid integration ... perhaps over Xmas; all depends how easy it is.
Kai
19-Dec-2007
[7079]
Ashley - thanks for the snippet. What would I use for buttons? Setting 
on-focus and on-click does not give usable results...
Ashley
19-Dec-2007
[7080]
display "" [
	a: button [print "a"]
	b: button [print "b"]
	button [
		alter b/options 'info
		either find b/options 'info [
			show b
		][
			b/feel/over b false 0x0
		]
	]
]
Kai
19-Dec-2007
[7081]
Thanks!
Ashley
19-Dec-2007
[7082x3]
Uploaded build#106 with new set-state function:

USAGE:
    SET-STATE face /info /edit

DESCRIPTION:
     Toggle and show widget state.
     SET-STATE is a function value.

ARGUMENTS:
     face -- (Type: object)

REFINEMENTS:
     /info -- Exit if already info.
     /edit -- Exit if already edit.
Used like this:

display "" [
	field
	f: field
	button [set-state f]
]
Only works with:

	area
	field
	edit-list
	button

widgets at this time.
Kai
19-Dec-2007
[7085]
awesome - any ideas when drop-lists & checks will be supported?
Ashley
20-Dec-2007
[7086]
Not soon. This is a hack to support common editable widgets, whereas 
a proper solution should support every widget that is editable *and* 
selectable (e.g. tab-panel, table, drop-list, check, radio-group, 
etc). It means adding 'info support to a lot of widgets that currently 
do not have it.
Pekr
20-Dec-2007
[7087]
is there also tree-view part of Robert's submissions? I could need 
one in few weeks :-)
Graham
20-Dec-2007
[7088]
There is already a working tree
Kai
20-Dec-2007
[7089x2]
probe btn/color
probe btn/size
probe btn/text
how come size & text return what i expect but color always returns 
none?
Ashley
20-Dec-2007
[7091]
btn/effect/draw
Kai
20-Dec-2007
[7092]
Asley ~ where do I read up on what is what in that block?
Ashley
21-Dec-2007
[7093x2]
http://www.rebol.com/docs/draw-ref.html
Uploaded build#107 with new tree widget:

USAGE:
	tree data ["Pets" ["Cat" "Dog"] "Numbers" [1 2 3]]

DESCRIPTION:
	Values arranged in a collapsible hierarchy.

OPTIONS:
	'expand starts with all nodes expanded


It's very basic, can only handle a couple hundred entries, and still 
has some UI quirks ... but it works and is only 3Kb.
Graham
21-Dec-2007
[7095]
Go Ashley ! :)
Ashley
22-Dec-2007
[7096]
Uploaded build#108.

1) Fixed UI quirks with tree widget

2) Renamed vid widget to style

3) Added a new scroll-panel widget

	USAGE:
		scroll-panel data [calendar]
		scroll-panel data [field field]

	DESCRIPTION:
		A panel used to group widgets within a scrollable container.

4) Added a new sheet widget

	USAGE:
		sheet
		sheet options [size 3x3 width 2]
		sheet data [A1 1 A2 2 A3 "=A1 + A2"]

	DESCRIPTION:

  Simple spreadsheet, based on rebocalc.r, with formulas calculated 
  left to right, top to bottom.

  A cell is either a scalar value, string, or a formula starting with 
  "=".

  Scalar values are automatically right-justified, series values left-justified.

  Remember to put spaces between each item in a formula and use () 
  where needed.

	OPTIONS:
		'size specifies number of columns and rows
		'width specifies cell width in relation to cell height


5) Updated %tour.r to incorporate examples of tree (List), scroll-panel 
(Grouping) and sheet (List) usage.

Enjoy!
Pekr
22-Dec-2007
[7097]
hehe, so cool. Will imediatelly find usage for tree-view. Now the 
grid and we have cool data manipulation capabilities .... :-)
Jean-François
22-Dec-2007
[7098]
Ashley, Is there a simple way to get this version, or do I have to 
download & install a SVN client?
Pekr
22-Dec-2007
[7099]
Probably via svn ... I just did it, rather easy - right click on 
the folder in filemanager, selecting update and it gets all downloaded 
...
Ashley
22-Dec-2007
[7100x2]
write %rebgui.r read http://trac.geekisp.com/rebgui/browser/rebgui.r
write %tour.r read http://trac.geekisp.com/rebgui/browser/tour.r
Graham
22-Dec-2007
[7102x4]
Print support - how about a button that will turn the face/parent-face 
into a PNG, save to drive and invoke the browser on it?
this is for rebgui screens .. or perhaps better still, a way to capture 
the shift-print scr on any rebgui window
Ashley, I read that request-dir uses the new tree-view, but when 
I tried it out on a few checkout, and clicked on the "Home" button, 
rebgui froze on me. Reproducibly.
new checkout
Ashley
23-Dec-2007
[7106x2]
Ah, I had to revert request-dir but forgot to revert read-dir in 
%rebgui-functions.r ... will fix this later tonight.


re: Print support ... I'll look at adding a handler that you can 
assign to an FKey of your choice.
Uploaded build#109 with above fix. Handler is as simple as:

ctx-rebgui/on-fkey/f3: make function! [face event] [
	save/png %screen.png to image! face
	browse %screen.png
]


Just click on the window you wish to print and press F3. I'll add 
this as a cookbook entry.
Graham
24-Dec-2007
[7108x4]
Just wondering if the tree might return more information than just 
the face text. Say you want to retrieve stuff from a database but 
only want to do so if it is a level below a node.  At present you 
don't know if you're at a node of a leaf.
or a leaf.
So, you have to traverse the data of the widget to find out where 
you are .. and if a node and leaf both have the same name ... then 
you're stuck.
Similar sorts of problems occur if you want users to be able to add 
to the tree.