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

World: r3wp

[!RebGUI] A lightweight alternative to VID

Robert
25-Feb-2006
[3004]
triggers: This seems to be problem, if a RebGUI app is closed to 
the command line and than restarted. Seems like the triggers are 
somehow still active than.
Ashley
25-Feb-2006
[3005]
Robert: "Using CTRL+A in list doesn't mark all entries." It does 
work, but only in "multi" mode. ;)
Robert
26-Feb-2006
[3006]
Ok, than it might be the help text on screen that has a bug ;-))
Ashley
26-Feb-2006
[3007]
Note: 

Single" allows one row at a time to be selected, whilst "Multi" supports 
multi-row selection via Ctrl+click, Shift+click and Ctrl+A keystrokes." 
... how could this be any clearer? ;)
Robert
26-Feb-2006
[3008]
I know... IIRC (haven't cross checked) in tour the text says "try 
CTRL+A to selct all..." but it's a single tabel shown. So, I thought 
it's not working.
Ashley
26-Feb-2006
[3009]
RebGUI goes Beta! With the fixing of some long running area / scroll 
/ slider bugs I've finally reached a stable enough release candidate 
for 0.4.0 Beta; so, from a REBOL/View console:

	do http://www.dobeash.com/get-rebgui.r
	do view-root/public/www.dobeash.com/RebGUI/tour.r


Also note that the demo directory includes a nifty new pie-chart 
widget demo (thanks Robert).


I've also separated the 0.3.x and 0.4.x issues into separate sections: 
http://www.dobeash.com/it/rebgui/issues.html#section-2.3

Changes in this release include:


 Scrolling fixed (all area scroll / slider problems should be fixed, 
 and a couple of minor field scrolling issues were also fixed)

 set-locale function to dynamically change locale files / dictionaries
	pie-chart widget added

 slider width reduced by 1/5 for area, table, text-list, drop-list, 
 edit-list (looks better)

 table column arrows made smaller and darkened, plus right-most arrow 
 moved to table boundary (more space for column heading text)


and an important one from 0.3.9 that I omitted to mention last release:


 drop-list / edit-list now size to the smaller of number of items 
 or available space in the bounding parent face (so no more lists 
 that disappear off the edge of a face / window)

Enjoy!
Robert
26-Feb-2006
[3010]
Great stuff as always.
Henrik
26-Feb-2006
[3011x2]
oh, I want to play with this, but no time :-(
ashley, LIST-VIEW may soon be at a point where it'll become portable, 
i.e. no big structural changes are coming
Graham
26-Feb-2006
[3013]
Area widget  looking great!
Ashley
26-Feb-2006
[3014]
If it passes the "Graham test" then it might just finally be fixed! 
;)  (Who would of thought it could take over 8 hours to get a dozen 
lines or so of scroll and area redraw code correct!!!)
Graham
26-Feb-2006
[3015x2]
Tough problem - quality is not quantity!
I can make a start now at rolling the new version of RebGUI into 
my EMR finally.
Brock
26-Feb-2006
[3017x3]
Ashley, just noticed something for the Text-List when in multi mode. 
 Ctrl-clicking shows each element in the list is highlighted as clicked 
and the associated text is displayed in the Month display field. 
  however, selecting CTRL-A does not display all the months in the 
Month display field while it does highlight all the months.
Ctrl-clicking all individually shows all values in the Month display 
area.
selecting a few with Ctrl-click, then selecting all, then Ctrl-clicking 
on one to remove it from the selection then shows all but the un-selected 
item... Seems Ctrl-click should be showing all months.
Ashley
27-Feb-2006
[3020]
tour.r uses the text-list as follows:


 ex-text-list: text-list (tab-size - 70x25) #HW data (system/locale/months) 
 [
		show-text ex-text-list-text face/selected
	]


so the action (showing currently selected months) is only fired on 
a left-mouse click (single or double). The interesting design question 
here is whether CTRL-A *should also* fire the widget's action? I'm 
open to suggestions on this one. ;)
Anton
27-Feb-2006
[3021]
I think so. It's a "selection action" rather than a "click action". 
The click is a way to achieve a selection, and so is the ctrl-A.
Graham
27-Feb-2006
[3022x2]
but if the event depends on what is selected ?
ie. what is appropriate for one select may not be for multiple selects.
Anton
27-Feb-2006
[3024x2]
The action code can merely examine the current selection.
oh no! the user has to write more code to handle that!

In multi mode, the user code can't avoid having to check face/selected 
to see what is in it.
Ashley
27-Feb-2006
[3026]
Fixed in one line:

	if find face/options 'multi [
		clear face/picked
		repeat i face/rows [insert tail face/picked i]
		face/action face ; added
	]


works well, with the face being the row last clicked on. %tour.r 
works without modification.
Graham
27-Feb-2006
[3027x2]
So far, 0.40 is working well with my EMR.
I would like to see keycode support if possible.
DideC
27-Feb-2006
[3029]
Asley: having done some personnal work on area with scroller, 8 hours 
is not so much to have it working the right way.
Robert
27-Feb-2006
[3030]
Yes, keycode is an important thing to support. I never like apps, 
especially the one I use a lot, that can't be controled by short-cuts. 
The most important one is, how to jump in/out of group-boxes, to 
be able to fill in input-forms.
Ashley
27-Feb-2006
[3031]
Keycodes are already supported; try:

display "Test" [
	button #"a" [print "A"]
	button #"b" [print "B"]
]


Full keyboard navigation (e.g. tabing into out of group-box, tab-panel, 
etc) is another issue.
Pekr
27-Feb-2006
[3032]
well, even model of View is not still OK .... I think the pop-face 
is not ok. Try list-down style and try to press mouse outside its 
boundaries, it should close, but it does not. It at least reacts 
to ESC, but that is hardly sufficient ...
Graham
27-Feb-2006
[3033]
that was quick Ashley!
Izkata
27-Feb-2006
[3034]
keycodes were a part of VID, which the source of 'display seems to 
use....
Ashley
27-Feb-2006
[3035]
I added them back in 0.3.2. Note that case does not matter: #"a" 
will match both "a" and "A".


keycodes were a part of VID, which the source of 'display seems to 
use

 ... correct on the first count, but keycodes in VID are implemented 
 via the global events system which is not used in RebGUI (for those 
 who are interested and have the SDK sources; have a look at %view-vid.r 
 - Carl's comments make interesting reading).


RebGUI uses a much simpler (and dare I say more efficient) approach 
whereby the layout function (%rebgui-layout.r) collects keycode / 
face pairs and places them in a keycodes block at the window level 
(%rebgui-display.r). These keycodes are used by the 'process-keystroke 
function in %rebgui-edit.r. All this is very different from the way 
in which VID does this.
Gregg
28-Feb-2006
[3036]
That sounds like a good approach Ashley, kind of like Windows accelerator 
tables.
Ashley
28-Feb-2006
[3037x3]
Doing it at the window level has a lot of advantages; namely:


 1) automatically supports / handles duplicate keycodes across multiple 
 windows

 2) scales well (a window without keycodes doesn't carry the same 
 overhead as one with lots)

 3) can have multiple keycodes referring to the same face (for efficiency, 
 RebGUI's layout function only uses the last one specified)

 4) can have a keycode that refers to multiple faces (for sanity's 
 sake, RebGUI only acts upon the first face referred to)
Robert: "... a way to specify a starting size of the window that's 
not maximized. I want my app started with a size of 1024x768" Is 
that inclusive or exclusive of:


1) OS Window title bar and borders (which varies not only between 
OS, but also OS version and what DPI settings are in force)

2) Taskbar size and position (Windows) or Dock size and position 
(Mac) or ... (Linux)

Also, what happens if:

1) My display is 800x600, or the more common 1280x1024
2) I use a TabletPC or have an LCD in 768x1024 portrait mode?
3) Someone wants to use my app on a small PDA (300x200)


These are hard issues for a GUI designer to address in a generic 
manner. RebGUI provides some generalized approaches:


1) margin, gap, slider width, cell and font sizes - so you can choose 
sizes appropriates for the target display device
2) colors - so you can cater for 256-color (or lower) devices

3) Auto-resize directives (#HWXY) combined with /maximize - so your 
displays can use all available space without having to know the resolution 
in advance

4) /position refinements that are generic (top, bottom, first, second) 
- so you can design layouts in terms of, "I want this display on 
the left and this one on the right"


So the long answer to this question is, wanting to set an explicit 
display size is the wrong approach unless you are targeting a specific 
resolution device - and in that case just design your displays to 
use /maximise and be done with it. ;)
Robert: "Is there a way to re-use widgets like done with 'style in 
VID? For example: I have a drop-list specification, I need at several 
places but I don't want to copy the code."

Short answer, no.


If you have a "style" that is sufficiently different from the base 
widget (that is used often) then consider:

1) modify the widget's defaults in %rebgui-widgets.r, or
2) modify them inline, as in:

	ctx-rebgui/widgets/<widget>/<facet>: <value>

3) derive a new widget that works exactly the way you want.
Gabriele
28-Feb-2006
[3040]
Ashley: there is a reason, though, why VID was done that way. What 
happens if you add a face to a window's pane? VID allows that without 
any special processing. In your case you need to update the keycode 
table for the window.
Ashley
28-Feb-2006
[3041]
And more. In VID you can quite easily add a face to another face's 
pane, whereas in RebGUI you sometimes want to add (or replace) a 
particular widget in a display with another (there is little need 
in RebGUI to add faces to a pane as these low-level details are taken 
care of by the widgets themselves).
Graham
2-Mar-2006
[3042x3]
I'm finding that some of my windows won't respond to using keycodes.
display "Keycode" [ text "test" return button "Close" #"^[" [halt] 
] do-events
doesn't respond to esc key
Ashley
2-Mar-2006
[3045]
Added to issues. I think it is being [erronously] trapped by the 
area / field undo functionality.
Graham
2-Mar-2006
[3046]
that's going to be tricky to solve then.
Ashley
2-Mar-2006
[3047]
Not really. RebGUI can work out what widget currently has focus (if 
any) AND if it's a widget that has undo support enabled.
Graham
2-Mar-2006
[3048]
got a quick fix then ?  :)
Ashley
2-Mar-2006
[3049]
When I get some time to look at it. ;)
Graham
2-Mar-2006
[3050x2]
can you have more than one keycode for a field?
eg. I want to use space and ^M for "OK"
Ashley
2-Mar-2006
[3052]
ESC can be fixed by changing the last few lines of 'process-keystroke 
(in %rebgui-edit.r) to read as follows:

;			#"^[" [
;				;	ESC
;				hide-popup
;			]
		][
			either all [
				event/key = #"^["
				find view*/pop-list view*/pop-face
			][
				hide-popup
			][
				;	if key is assigned to an action do it
				if any [
					not view*/focal-face
					find [button] view*/focal-face/type
				][
					if f: select face/keycodes event/key [f/action f exit]
				]
			]
		]


Only the last of multiple keystrokes provided is used; but note that 
SPC is already mapped to button (so specifying #"^M" would give it 
two mappings ... a keystroke mapping and it's base "SPC activated 
on focus" default).
Graham
2-Mar-2006
[3053]
in an alert, does the "OK" button automatically have focus?