World: r3wp
[!RebGUI] A lightweight alternative to VID
older newer | first last |
Kaj 6-Sep-2005 [1936x2] | Hm, those were my first programs in 6502 machine code: validating field input routines to call from Atari BASIC. :-) |
The problems is how to do the feedback on input errors. This may have to be customized for a given program. I kept it simple and just made it beep :-) | |
Ashley 6-Sep-2005 [1938] | My tentative design concept for field level validation at the moment is to allow a block of REBOL data types to be specified, such as: field options [integer! decimal! none!] with invalid input changing the field color and not allowing focus to leave. Successful validation would restore field color and place the loaded face/text contents in face/data. Haven't thought about min / max lengths, although an empty field would be treated as none! so null / not null is handled by default. The password suggestion is a good idea, perhaps a min/max length option and a 'dict option that ensures the password contains no spaces and does not appear in the currently loaded dictionary? |
Graham 6-Sep-2005 [1939x2] | yep, or we could enforce an optional complexity rule such as contains mixed upper/lower case digits and punctuation marks |
ie. the rule can be defined by the user, and the gui allows us to specify a rule. | |
Kaj 6-Sep-2005 [1941] | If you make the rules that complex, I think there should be a way to give custom feedback, like displaying an error message |
Graham 6-Sep-2005 [1942] | Ok, perhaps use the action block for that. |
Pekr 7-Sep-2005 [1943] | Ashley - pressed for time, more on that later, but basing field values upon datatypes is not imo good way to go ... |
Ashley 7-Sep-2005 [1944] | And the alternative is? |
Kaj 7-Sep-2005 [1945x4] | I'm willing to bet Petr wants an evaluation function, like in Lotus Notes ;-) |
Which is indeed very flexible, but data types would be a good default | |
There's a problem with money, though, because the REBOL 1'000 syntax is not the human 1.000/1,000 way | |
(Not that there isn't always a problem with money ;-) | |
Chris 7-Sep-2005 [1949x2] | My thought is to have two parse rules -- one evaluated on keypress, the other on exit (of field). The exit parse rule would be strict, the keypress one would allow for partially completed entry, but denies a keypress that fails the rule. The two parse rules could be passed as arguments or created from a dialect? |
For example, the dialect may be: #XXX-XX and produces: [0 3 numeric 0 1 #"-" 0 2 numeric][3 numeric #"-" 2 numeric] | |
Graham 13-Sep-2005 [1951] | Any updates here? |
Ashley 14-Sep-2005 [1952] | Working on a number of 'layout fixes and adding support for a "return-after n" type keyword that should reduce the number of 'return's used in certain types of displays. |
Graham 14-Sep-2005 [1953] | Great. |
Pekr 14-Sep-2005 [1954x2] | one question - will there be better list/grid support? My rebol friend would use rebgui immediatelly, but is smiling and saying - those ppl don't design db releated apps? Wow can they live without multi-column text list or proper grid? :-) |
I told him those more complex styles will come later .... | |
Graham 14-Sep-2005 [1956] | there is multicolumn list now. |
Pekr 14-Sep-2005 [1957] | pretty weak though :-) |
Ashley 14-Sep-2005 [1958] | I'm using code like the following quite often now: display join settings/file " Summary" compose/only [ ... records: table 90x25 #W options ["Date" right .4 "User" left .2 "Description" left .4] data ( sql compose [select [date user description] from sys_records where (id) order by date desc] ) [ ; set record path record-path: dirize join file-path first face/selected ... ] ... ] The table widget is now very DB friendly. I haven't had a need for a grid widget, but then again my apps don't require spreadsheet type functionality. |
Pekr 14-Sep-2005 [1959x2] | Does it handle column resizing already? |
that was broken .. | |
Ashley 14-Sep-2005 [1961] | Column resizing and sorting now work correctly. In addition a number of useful accessor functions exist to more easily manage the data. From the online doco: 5.24 Table Columns and rows of values formatted according to a header definition block. Specification action block to execute when an item is selected. data block of values. options Optional multi word followed by column header entries in the form: string specifying column title word specifying column alignment decimal specifying column width as a percentage Runtime data block of values to display. picked block of currently selected row number(s). selected block of currently selected data. redraw function to redraw widget after data changes. |
Pekr 14-Sep-2005 [1962] | is there a multicolumn text list? Btw - why Carl did not check-in his updated and better list style as from VID 1.3 older IOS initiative for 1.3? |
Ashley 14-Sep-2005 [1963] | Plus the latest build lets you assign alt-click and dbl-click actions. |
Pekr 14-Sep-2005 [1964] | hmm, still the same issues - how they will be adressed? I know that event/focus system is not all that easy to change - but drop lists still work in non-system friendly manner - can't close it clicking away or pressing escape .... text-list does not allow multirow sellection (or it is part of its options?) I will better look into docs to stop asking what is maybe obvious :-) |
Ashley 14-Sep-2005 [1965] | Table and multi-column text-list are one and the same. Not involved in the VID 1.3 work so can't answer that. |
Pekr 14-Sep-2005 [1966x2] | table still needs a lot of work imo .... when you select record, move down by arrow down - when hilighted-row reaches the bottom, it does not cause srolling and row hilighting vanishes ... |
nice work on request-dir! | |
Ashley 14-Sep-2005 [1968] | Thanks, that and table still need a few minor aesthetic improvements but the base functionality is pretty solid. |
Pekr 14-Sep-2005 [1969x6] | can I have visual cell dividers? I mean - some styling istead of flat white design? It is list after all, so I will have to play with it ... |
another "bug" - maximize demo .... move last column to righ, minimize back - you can't see last column and there is no chance how to get to it .... I would expect horizontal scroller to appear ... | |
as for text-list multi-selection - dunno if I was understood incorrectly, or it was my fault to provide you with not so accurate description of how multi-selection with shift works .... however - it should be easy for you to check - just start Explorer and play with shift multi-selection ... | |
when you hold shift, it should remember the "last" press, but it means last before you pressed the shift. And that last point should not change. So - if you then select some other row, whatever the row is, it should still hilite rows between the initial point, and the point of your actual selection ... | |
I selected incorrect word last time .... "last" meant "initial" - it should work like anchor ..... simply you have one row selected ..... once you press shift, no matter what happens, that hilited row becomes kind of anchoring initial point. Then when you select whatever row, everything in between anchoring initial position and the point of your actual selection becomes hilighted/selected ... ufff, somehow can't express myself :-) | |
otherwise ctrl and other multiselection functionality is correct ... | |
Graham 17-Sep-2005 [1975] | Why does using alert sometimes close down the window it is being called from? |
Ashley 17-Sep-2005 [1976] | Haven't come across that one before. When it's happened was there anything in common between occurrences (I'm assuming its too sporadic for a reproducible test case)? |
Graham 18-Sep-2005 [1977x3] | Any plans to write accessor functions like 'get-text ? |
I guess what's happening is that 'alert shuts down any modal screens showing like this: display "" [ text "Non modal screen" return button "dialog" [ display/dialog "Test" [ text "Modal Screen" retur n button "Alert" [ alert "hello" ]]]] do-events | |
display "" [ text "Non modal screen" return button "dialog" [ display/dialog "Test" [ text "Modal Screen" return button "Alert" [ alert "hello" ]]]] do-events | |
Ashley 18-Sep-2005 [1980] | No plans with 'get-text, unless it was to do something over and above what face/text does (i.e. trim then show). The alert problem is related to RebGUI's liberal use of hide-popup to cope with drop-lists and edit-lists that need to be closed when another one is opened. I figured at the time that having more than one non-modal dialog open at the same time probably didn't make much sense - although an alert from within one is a valid case [in hindsight]. |
Graham 18-Sep-2005 [1981x3] | I just noticed that you can't initialise the data in a table with a copy [], but you have to 'clear it instead. table/data: copy [] append table/data [ ... ] table/redraw does not work but clear table/data append table/data [ ....] table/redraw does work |
Ashley, can we fix it so we can allow alerts within a modal window? | |
The other thing ( small ) is that rows from a database are normally returned like this [ [ .... ] [.... ] ] whereas table expects it's data like [ ............... ] we have to flatten it before sending it to the table. | |
Ashley 18-Sep-2005 [1984] | Alert ... to be fixed. Table data is normally changed with "insert clear data [...]" - this optimization needs to be documented. The table data representation shows my bias towards a simple flat structure and is compatible with RebDB (representing each row as a block makes sense for small volumes of data but is wasteful once sizable numbers of rows are being managed). Good observations, keep them coming. ;) |
Graham 19-Sep-2005 [1985] | I guess the slight problem with a flat structure is that you have more interdepencies in the code With a flat structure, I have to know that there are 4 elements in each row row: skip face/data first face/picked - 1 * 4 Whereas with blocks for rows I can do this instead row: skip face/data first face/picked - 1 |
older newer | first last |