World: r3wp
[!RebGUI] A lightweight alternative to VID
older newer | first last |
Vincent 4-Mar-2005 [58] | with it, a program designed for a 1024x768 display can work on a 640x400, or even a 320x200 screen :-) there's a known bug in /view betas with alpha channel, the transparency use real coordinates, not virtuals. |
Ashley 5-Mar-2005 [59x2] | Good diagnosis. I knew assigning a pair! to span did *something*, I could never quantify exactly what though. As Ammon said, an interesting effect but somewhat useless in an age where screen ratios are all over the place and resizing needs to occur both vertically and horizontally. |
First stab at a list of required base widgets area bar box button check droplist - text display + drop-down list editlist - edit box + drop-down list field groupbox - encloses a group of gadgets in a titled border icon image list – single column listview – multi-column progress radio scrollbar spliter – a “spliter window” which affects the width / height and position of other gadgets tab - arranges multiple gadgets into logical groups text slider treeview updown – scrollbar minus the bar (used with a field to increment / decrement numbers, etc) menu popup-menu - context menu status – status bar with one or more “segments” toolbar The aim is to have as few widgets as neccessary to build the majority of required GUI's. Take a look at the applications you use on a day to day basis, what widgets do they use? Are they in the list above? How are they named? Are there any widgets in the above list we can do without? (not that *someone* won't need it, just that it isn't common enough to be part of the base widget set). | |
Graham 5-Mar-2005 [61x2] | tabbed panels |
use them all the time | |
Gregg 5-Mar-2005 [63] | As long as there is a glossary that let's you translate from familiar terms, I think you're OK using REBOL's native terms, though they were foreign to me when I started. Window or dialog? Or Screen or Form or Layout. A Dialog is usually something other than the main screen in an app. You sometimes need to use all those terms if you're speaking in the domain of an application, so use wha'ts appropriate in each context. Face or graphical object? Or Control or Widget. Tough call on this one. I was used to Control from VB, and Face confused me as it could be a layout as well. I like distringuishing between layouts and controls. Hmmm Maybe a hierarchical tree. Facet, attribute, property or descriptor? I like either Attribute or Property. I can live with Facet in REBOL, it's shorter, and it makes sennse if you think in terms like "let's discuss this facet of the business". Style, widget or template? Style, definitely. |
eFishAnt 5-Mar-2005 [64] | Styles (and Stylize) are also a user-friendly way to get massive code-reuse, as well as being the widgets... maybe widget-styles (I have seen people say VID-styles before) or something like that could describe subsets of styles in use...VID is a package of styles...(just some outloud thoughts) |
Vincent 5-Mar-2005 [65x4] | bug: the last widget in a rebgui layout determine the width of the face - if the last widget is narrow, the window is narrow. fix: in %display.r, you have to keep track of the maximum x value: - near "xy: origin-size" you can initialize a 'max-width: "max-width: origin-size/x" - in parse loop, just after xy update "xy/x: xy/x + last-face/size/x", you can update the 'max-width: "max-width: max max-width xy/x" - after (outside) the parse, near where the y size is last updated "xy/y: xy/y + last-face/size/y", you can set the x size to be the 'max-width: "xy/x: max-width" |
(it fixes the "crash if 'return is the last word in specification" bug too) | |
for widgets, I would add a basic 'anim - it's just too easy to implement to miss it (ie. a looping anim widget) : | |
anim: make face [ image: none rate: 1 edge: none font: none feel: make feel [ engage: func [face act event] [ if event/type = 'time [ face/image: first face/data face/data: either tail? next face/data [head face/data][next face/data] show face ] ] ] ] | |
DideC 5-Mar-2005 [69] | editlsit = droplist with a read-only mode in the field IMO |
shadwolf 5-Mar-2005 [70x2] | for droplist the edit field must have an auto completion according to entries in the dropped list |
example you have paris, boston, new-york in the list you type "ne" it"s completed automatically by "new-york" | |
DideC 5-Mar-2005 [72] | There is auto-fill on R-forces Rebsite. |
Vincent 5-Mar-2005 [73x5] | a 'check with 'text in one face : |
check: make face [ edge: none data: false para: make para [origin: 14x0] effect: copy [draw [ pen 96.96.96 fill-pen 255.255.255 box 0x0 12x12 pen none line 0x7 5x12 11x0 line 0x6 6x12 12x0 ]] feel: make feel [ redraw: func [face act pos][ if act = 'show [ face/effect/draw/9: either do face/data [255.0.0][none] ] ] engage: func [face act event][ if event/type = 'down [ face/data: not do face/data show face ] ] ] ] | |
usage: check [ text "a label" size 100x15 data true ] | |
another bug (or more likely unfinished part): the last widget in a row determines the height of the row | |
sorry, didn't fully read the specification - it's the intended behaviour | |
Ashley 6-Mar-2005 [78] | Latest release, incorporating all the above changes, available at: http://www.dobeash.com/files/RebGUI-012.zip Documentation also significantly expanded to include: - Latest REBOL/View facet observations - Glossary of terms - Licencing section - RebGUI Display User's Guide - RebGUI Widget Designer's Guide Get it here: http://www.dobeash.com/it/rebgui/ My intention with RebGUI is to foster a community project that can deliver a credible alternative to VID, with my role being one of project leader / sponsor. The licence stuff is just to clarify my legal position and the rights of contributors and users. I'm looking at how to enable co-operative development (using IOS) but this can wait until the base design has stabilized. It's just too easy to fork efforts at this stage. All of this is still Alpha so if there is anything you disagree with (technical, documentation or legal) then please raise it here and I'll do my best to accommodate your concerns. I want this whole process to be as open as possible, but without the pitfalls of "design by committee" where nothing gets done! ;) |
DideC 6-Mar-2005 [79] | http://www.dobeash.com/it/rebgui/facets.html#section-5 May be you can add to the 'effect definition that any effect can be used. Not only 'bezel, 'bevel and so on |
shadwolf 6-Mar-2005 [80x9] | AShley thantk you verry mutch for you effort ;) |
I have monitored the memory consumtion of test.r script and I have seen that every second betwin 4 to 8 ko are allocated maybe there is something to do to avoid this | |
I think it's related with event analyse | |
Hum after some tests that eratic memory consumtion apears to be related with the anim widget ... I put it in comment then I have a stable mémory allocation. | |
othe widget that consums memory is the progresse widget | |
progress: make face [ effect: copy [draw [pen blue fill-pen blue box 0x0 0x0]] ; is copy needed? data: 0 font: none para: none feel: make feel [ redraw: func [face act pos] [ if act = 'show [ face/effect/draw/box: to pair! reduce [ to integer! face/size/x * face/data: min 1 max 0 face/data face/size/y ] recycle ] ] ] ] | |
this provoque the memory usage stabilisation it will block to the needed | |
after the draw we '"clear" the memory using recycle | |
same for anim adding to the feel a recycle call after the show face will stabilize the memory usage | |
Anton 6-Mar-2005 [89x2] | COPY is not needed, though it does not hurt. |
Shadwolf, the memory used increases always more and more ? | |
Vincent 6-Mar-2005 [91] | agree, COPY not needed - just an habit when I modify blocks, but here I did it two times wrong: - the 'draw sub-block is modified, so it should be copy/deep - no 'copy needed with 'make, who does copy/deep |
shadwolf 6-Mar-2005 [92] | Anton without recycle yes but with it it's stable |
Vincent 6-Mar-2005 [93x2] | mmh, after disabling nearly all widgets, it seems that the events who eats memory: even without 'progress, memory is consumed by 4-8ko steps. (just going over 'button eats memory) for 'anim its more visible ('time events), recycle in 'progress mean recycle at each 'show, so a recycle at window level could do the same. |
it could be just 'show causing the 4/8ko memory usage. | |
shadwolf 6-Mar-2005 [95x2] | in fact I think is allacation every time an allocation is done the yet existing data is not cleared we yet discus this point on french forum we we was working on free-mem fonction |
for example: face/effect/draw/box: to pair! reduce [ to integer! face/size/x * face/data: min 1 max 0 face/data face/size/y | |
Vincent 6-Mar-2005 [97x2] | but for anim, it's a simple assign |
no allocation is done in 'anim | |
shadwolf 6-Mar-2005 [99x2] | the yet existing data is still in memory at it's image you yet have the previous one some where in the memory stack manage by REBOL GC |
anim: make face [ edge: none font: none para: none feel: make feel [ engage: func [face act event] [ if event/type = 'time [ face/image: first face/data face/data: either tail? next face/data [head face/data] [next face/data] show face recycle ] ] ] rate: 1 ] | |
Vincent 6-Mar-2005 [101] | face/image is just a pointer to an image in face/data |
shadwolf 6-Mar-2005 [102x6] | if you use this you will see the no more memory alloc |
just comment the recyle and then the memory consumtion is back ... | |
so there is a direct like I think | |
with recycle in the anim feel I get 6776ko allocated | |
and it's stable without it there very mutch allocation before GC to be called | |
after some play on forwar/backward icon-button I get 7600 ko of allocated memory without any recycle call ... | |
older newer | first last |