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

World: r3wp

[!RebGUI] A lightweight alternative to VID

Pekr
20-Sep-2005
[1999x4]
In CA-Visual Objects, the logic was even more abstracted - you e.g. 
defined DB field tel-num, char(20). That field, you could use across 
your tables, and from the application pov, you defined mask objects 
- you could e.g. have different mask objects, defining behaviour, 
validation, mask, tight to the same tel-num, char(20) field ...
I don't know how to do it best in REBOL, maybe a mask dialect, or 
directly a parse block? That is upon clever heads here :-)
One of the most difficult fields was date entry field 99.99.9999, 
with VO we had three or more implementations. Native one pretty sucked 
- it is all about what chars you allow, what happens if you press 
tab, del, how is field hilighted by default, what part is hilighted, 
if your backspace key deleting letters stops at dot or not etc ec. 
With date field - do you want to allow user to enter any number? 
67 or other number is surely not a good day-number, is it? :-) Now 
do you want to disallow user to type nonsense directly? How do you 
know without linking it to calendar? Or do you do your validation 
when leaving your field? Some ppl do validation once per form, e.g. 
when you try to press "Save" button (not my preferred way, at least 
for some field-types, but some do prefer that) ...
I don't want to complicte the whole thing - but if you are about 
to add some functionality - first answer to yourself some of above 
questions - because semi-functional solution is not a solution for 
me and in that case it is just becoming a bloatware, which sooner 
or later, will be replaced by custom solutions, as ppl simply will 
need above functionality. And the worst possible thing is, if your 
solution does not allow to be replaced in an easy way ...
Sunanda
20-Sep-2005
[2003]
Some of those are philosphical questions about application design 
/ user interface.

For example, I have one application that permits things like "Not 
sure, maybe next tuesday. must ask Bob" in a date field.

That's perfectly valid until they click the "publish" button. Then 
we need a real date. So *private* data conforms to their rules; *public* 
conforms to ours.
Graham
20-Sep-2005
[2004x3]
perhaps we need different field types.
field accepts every character, but if I had integer-field, or alpha-field, 
or bitmask-field .. it would help.
it sucks having to validate after the event.  better to stop the 
user from entering the characters in the first place if we wish to 
disallow them.
Pekr
20-Sep-2005
[2007]
Graham - aren't character of integer field another level of complication? 
Let's have one type of field, with kind of clever masking/validation 
- then, using the SAME rules, let's define your character or integer 
field, please ;-)
Sunanda
20-Sep-2005
[2008]
*Some* validation can only happen after the event -- unless you enforce 
the order in which fields are completed. And even then it's not always 
possible.

May you need some lightweight masks for simple things. Plus the ability 
to skip off to a tailored validation function for the more awkward 
stuff.
Graham
20-Sep-2005
[2009]
It depends upon how easy this is to implement.
Pekr
20-Sep-2005
[2010]
... it was just food for thoughts from my side - maybe most of developers 
don't need such advanced functionality ... so let's think about possible 
ways of how to implement that and then let's present some solutions 
...
Graham
20-Sep-2005
[2011x2]
I am currently doing field validation by datatypes, but it does have 
it's limitations as Pekr says.
Is a zip code an integer! or string! Is a password field string! 
or integer!  ?
Pekr
20-Sep-2005
[2013x2]
zip code might by an integer, if the space used in that is part of 
your mask - e.g. in CZ we have "739 92", PL uses "73-992" etc.
(not mentioning some countries, which allow chars,not just digits)
Sunanda
20-Sep-2005
[2015x2]
Good questions.....A zio code format depends on the country....even 
if you switch masks vy country name, the country name may be entered 
after the zip code.

You'll only handle that correctly with post-form completion validation.
vy == by
Graham
20-Sep-2005
[2017]
load  "739 92"
== [739 92]
Pekr
20-Sep-2005
[2018]
imo some simplified parse dialect could work (we have Gab's parse 
rules, so we could be able to define parsing rules dynamically, or 
we implement it other way, dunno), the tricky part could be, if you 
would like to do validation upon each event (key-press), or only 
when your field is losing focus ...
Graham
20-Sep-2005
[2019x4]
in some ways you have to implement a mini editor for the field.  
prevent scrolling. skip over characters.
Back again regarding the data format for tables, sometimes I want 
to include a database key in the data without displaying it.  So, 
it might the 3rd element in a row where there are only two columns 
displayed.  With a flat data spec, I can not do this.
Also, I don't know if this is intended, but if you manage to click 
on the arrow in a table header, nothing happens.  to sort, you have 
to avoid the arrow.
show-focus highlights all the text in a field. Wonder if better to 
just show the cursor at the end.
Ashley
20-Sep-2005
[2023]
Note the following user-configurable blocks under ctx-rebgui/edit:

	tabbed: [area field edit-list password button]

	hilight-on-focus: [field edit-list]

	caret-on-focus: [area field edit-list password]

	action-on-enter: [field edit-list password]


But its probably a good idea to agree on the "correct" default behaviour 
anyway.
Graham
21-Sep-2005
[2024]
show-text ( I think ) should set the slider back to the top when 
used with an area widget.
Graham
22-Sep-2005
[2025x2]
If you do a show-text area {some rather large text},and then do a 
show-text area with small text, the small text appears at the bottom 
of the area field.  If you then click on the area field, it moves 
to the top.
You have to use the slider to move to the bottom of the large text 
before showing the small text to see this.
Ashley
22-Sep-2005
[2027]
Area / scroll / slider reset definitely needs more work.
[unknown: 5]
22-Sep-2005
[2028]
Thanks for commenting James.
Graham
22-Sep-2005
[2029]
Should a double click also fire the single click action ?
Ashley
23-Sep-2005
[2030]
It does by default as a double-click generates two 'down actions 
with the latter having event/double-click = true. This is usually 
a good thing anyway as (in the case of lists with a highlight bar) 
double-clicking a new entry automatically triggers the default single-click 
action (highlight a new row) plus the double-click action we are 
interested in trapping.
Graham
23-Sep-2005
[2031]
Any reason why request-file has lost the /keep refinement ?
Geomol
23-Sep-2005
[2032]
Version 1.3.1.3.1 has /keep. Is it in a newer version?
Graham
23-Sep-2005
[2033]
Rebgui redefines 'request-file without the /keep refinement
Ashley
23-Sep-2005
[2034]
Oversight I think. ;)
Graham
23-Sep-2005
[2035x3]
Ahh....
I'm doing some async io, which works with View, but in Rebgui, I 
get the following error when I click on my button

make object! [
    code: 312
    type: 'script
    id: 'cannot-use
    arg1: 'path
    arg2: 'none!
    arg3: none
    near: [if pf/data <> face/data [
            old: pf/data
            if old [
                clear skip pf/pane/:old/effect/draw 7
                show pf/pane/:old
            ]
            pf/data: face/data

            insert tail face/effect/draw [pen leaf fill-pen leaf circle 6x10 
            3]
            show face
            face/action face
        ]]
    where: 'switch
]
nope ... something else going on.
Ladislav
24-Sep-2005
[2038]
I think, that Cyphre will be able to give you an advice on that
Graham
24-Sep-2005
[2039]
it was my fault
Pekr
24-Sep-2005
[2040]
Ashley - why request-date was redone? It has strange metrics here 
... too wide (x axis) and it looks like 80ies jurrasic Win3.1 period 
with btns :-) - old look was much nicer with chevron kind of buttons 
... and it was merely the same size X and Y axis wise ...
Ashley
24-Sep-2005
[2041]
Had to increase width to account for longer three letter day abbreviations 
(previous version used two letters), but having each cell being a 
square yielded too much white space (especially when the last row 
has no entries in it). "<" and "<<" buttons will eventually be replaced 
with SVG icons when support for that is added.
Pekr
24-Sep-2005
[2042]
Thanks for your answers, Ashley. Will SVG support be RebGUI system-wide?
Graham
24-Sep-2005
[2043x3]
Ashleny, just wondering how complex a GUI you've managed to build 
with the current version.
*Ashley*
Though I guess tour.r is pretty complex
Ashley
24-Sep-2005
[2046x2]
Pekr, yes. The code for svg-toolbar, icon, etc widgets is all there 
... just waiting on SVG renderer project (which in turn is waiting 
on some REBOL/AGG fixes).
Graham, I've messaged you privately. When I get back from the DevCon 
(November 1st) I'll put some screen-shots of some of my commercial 
apps up. Maybe a demo or two as well.
Graham
25-Sep-2005
[2048]
Any idea on why this error occurs?

make object! [
    code: 312
    type: 'script
    id: 'cannot-use
    arg1: 'path
    arg2: 'none!
    arg3: none
    near: [if pf/data <> face/data [
            old: pf/data
            if old [
                clear skip pf/pane/:old/effect/draw 7
                show pf/pane/:old
            ]
            pf/data: face/data

            insert tail face/effect/draw [pen leaf fill-pen leaf circle 6x10 
            3]
            show face
            face/action face
        ]]
    where: 'switch
]