World: r3wp
[View] discuss view related issues
older newer | first last |
Maxim 15-Sep-2009 [9130] | anyone know a way to prevent text-list from picking more than one item with ctrl? |
BenBran 23-Sep-2009 [9131] | I need some clairfication in reading the syntax/specs for Rebol2.x stuff. I'm sure there is a pattern, but I havn't seen it yet. Example: taken from rebol.net/wiki/VID:_Styles#Derived_styles_2 TEXT-LIST size: pair! rows: block! selected: block! ; this way set-face will not work. need to solve this. action: block! background: tuple! background-draw: block! how do I know when to assign a value to a [word] i.e. lo: [text-list size: 300x200] ;;does not work view layout lo and when not to use the [word] such as lo: [text-list 300x200] ;; works view layout lo Question 2. Could someone give a one line (short as possible) example of setting all the values for this text-list keyword using this format lo: [text-list ......] view layout lo thanks in advance. |
Henrik 23-Sep-2009 [9132] | The guide you are using is for VID3 for REBOL 3, which is no longer in use. |
Dockimbel 23-Sep-2009 [9133] | The documentation you've pointed to seems related to R3, not R2.x. There's no header info in that page, so just guessing. You'll find REBOL 2.x view documentation here : http://rebol.com/docs.html More precisely: http://rebol.com/docs/view-guide.html http://rebol.com/docs/easy-vid.html#section-14 (for TEXT-LIST examples) About your question, here's a more complete example (not sure that all possible options are there, thought) : lo: [text-list 300x200 yellow blue data ["one" "two" "three"] [print "action"]] view layout lo |
BenBran 23-Sep-2009 [9134x2] | Thank you both. Is it possible to create columns as well or is text-list a single column entity? |
or maybe incorporate tabs? | |
Dockimbel 23-Sep-2009 [9136x3] | AFAICT, text-list is single column. Henrik has done some nice new components for VID, his LIST-VIEW style should fullfill your needs. Have a look at : http://www.hmkdesign.dk/rebol/page0/page0.html |
Here's a quick link to what you're looking for : http://www.hmkdesign.dk/rebol/list-view/docs/list-view.html#section-3 | |
Btw, here's another useful link about VID styles : http://www.codeconscious.com/rebol/vid-notes.html | |
BenBran 23-Sep-2009 [9139] | thanks for the links. I do have that list-view, I was trying to find a smaller way out. It was missing one or two features I was wanting last I checked, and didn't feel like pouring over the source code. about 100 pages. My brain would take quite a few months to understand it. Excellent software though. I'll give it some more thought, and thanks again for the vid-notes link. It looks very clean. |
Dockimbel 23-Sep-2009 [9140x2] | Digging out the old but still very good for quick VID learning vid-usage.r script: http://www.rebol.org/view-script.r?script=vid-usage.r |
If you want a small solution, you can use the LIST style, but it's a bit more complex to work with. You can find some examples in the vid-usage.r script (look of some examples is horrible, but it will show you how to build custom multi-column lists). | |
BenBran 23-Sep-2009 [9142] | well.... looking back through my coded examples... I actually have a good working list-box with over l000 rows with the columns correctly spaced. However, its missing some necessary features, one of which is how do i attach the vertical scrollbar to the list box. I tried the vid-usage.r script but perhaps I must have missed some key elements. I'll try looking at that again. |
Dockimbel 23-Sep-2009 [9143x4] | I wrote a quick example to show you how to achieve that : ] |
data: make block! 16 loop 16 [repend/only data [random "012345789" random "abcdefghij"]] visible: 5 ; number of visible lines window: (length? data) - visible ; sliding window size cursor: 0 view layout [ across space 0x0 grid: list 200x100 [ across txt 100 txt 100 ] supply [ if row: pick data count + cursor [face/text: pick row index] ] sc: scroller 16x100 [ cursor: sc/data * window show grid ] do [ sc/step: 1 / window ; initializing scroller steps granularity ] ] | |
Forgot to set the scroller bar size, the 'do init code should be : do [ sc/step: 1 / window ; initializing scroller steps granularity sc/redrag 5 / length? data ; initializing scroller bar size ] | |
or even better : sc/redrag visible / length? data | |
BenBran 24-Sep-2009 [9147] | That is an excellent example. Answered many questions I had (and raised a few more). Thank you for taking the time to show me this Dockimbel. |
Dockimbel 24-Sep-2009 [9148x2] | I'm glad it helped you. It was a good opportunity for me to refresh my memory about the (powerful but under-documented) LIST style. |
In case you're wondering about the block after SUPPLY, it's used internally by the LIST style to build an iterating function defining a local context where COUNT refers to the current row and INDEX to the current column. Each horizontally positionned face (purpose of the ACROSS keyword) defined in the LIST layout block, is counted as a column, so: txt 100 txt 100 => 2 columns. | |
amacleod 24-Sep-2009 [9150] | I'm need to get the name I assigned a face when I alt-click on it. I can get its style, offset, size etc but I do not see a way to get the face's name. More specificly I have multiple scroll-panels and I need to know the one I'm clicking in... |
Graham 24-Sep-2009 [9151] | What name? |
amacleod 24-Sep-2009 [9152x3] | a: scroll-panel [blah blah blah b: scroll-panel [blah blah blah I want to know if I clciked in scroll-panel a or b |
if event/type = 'alt-down [face/style] ...gives me 'scroll-panel' how do i get 'a' or 'b' | |
Sorry for the possible confusion but its one of anton's styles but did not think it would make a diff. | |
Graham 24-Sep-2009 [9155] | face = a ?? |
Henrik 24-Sep-2009 [9156] | face/var |
amacleod 24-Sep-2009 [9157x2] | yeah? |
it works... | |
Henrik 24-Sep-2009 [9159] | of course it does :-) |
amacleod 24-Sep-2009 [9160x2] | I thought about var but I thhought that would be too simple to work... Thanks alot Henrik! |
Is that because its Anton's style or is that a rebol thing for all faces? | |
Henrik 24-Sep-2009 [9162x2] | no problem |
face/var is set during layout for all faces that have a set-word! attached. | |
amacleod 24-Sep-2009 [9164] | great! Thanks! |
Henrik 24-Sep-2009 [9165x4] | you can also set it yourself like this: scroll-panel [with: 'a] |
oops | |
scroll-panel with [var: 'a] | |
but when you do that, there is no global word set. it can still be useful however, if you desire to recognize a face using different means, like traversing a pane for a specific face. | |
amacleod 24-Sep-2009 [9169] | good to know |
Graham 24-Sep-2009 [9170] | Must be a VID thing. Rebgui doesn''t do this AFAIK |
Henrik 24-Sep-2009 [9171] | this is done in the LAYOUT function. good one to study: source layout |
Maxim 24-Sep-2009 [9172] | face/var !!! OMG never knew this.... hehe amacleod, there's always stones unturned in REBOL even for us advanced users ;-) |
Anton 25-Sep-2009 [9173] | I reckon you did know this,. Maxim, but you just forgot about because it's not needed so much. What I do, which is more simple and direct, is just compare face with the word I previously set it to, eg: my-scroll-panel: scroll-panel and later in the event handler just if face = my-scroll-panel [...] This is just comparing two object references for equality, which is more fundamental and doesn't need any facility of VID. |
amacleod 25-Sep-2009 [9174] | Thanks, I'll try that too Anton. I was not able to gfet Henricks suggestion to work when placing the event handler in the main program...it only worked when placed in the seperate scroll-panel.r file. |
Maxim 25-Sep-2009 [9175] | I always setup stuff in the object directly using the with block. I was just amazed that after so long, such a feature is still unknown to me. :-) |
Anton 25-Sep-2009 [9176] | Eh? You really ought not to have to modify the scroll-panel.r file. That's just going to cause problems for you down the line, because you are forking. You should be able to override the default scroll-panel feel in your user code. Just let me know what you're trying to do with that and I'll show how. |
amacleod 25-Sep-2009 [9177] | Anton, I had the same worry about forking.... this addition/change to scroll-panel.r works: detect: func [face event][ if event/type = 'alt-down [ if face/var = 'my-scroll-panel [ print "hello"] ] event ] But this addition to global handler does not: alt-detect: func [face event][ if event/type = 'alt-down [ if face/var = 'my-scroll-panel [ print "hello"] ] event ] insert-event-func :alt-detect get error on face/var |
Anton 26-Sep-2009 [9178] | Yes, probably because not all faces in the system are VID faces. A VID face is an extension of system/standard/face with several facets added, including VAR. If the event handler came across a non-VID face, then face/var is an invalid path. So you see, this is an example of why using this method to identify a face is more brittle. You should better use: face = my-scroll-panel to determine identity of a face. |
amacleod 26-Sep-2009 [9179] | Anton, Your method is not working for me: alt-event: func [face event] [ if event/type = 'alt-down [ print "alt-click" if face = my-scroll-panel [print "face name = my-scroll-panel"] ] event ] insert-event-func :alt-event I get "alt-click" but I do not get true for 'if face = my-scroll-panel' I tried 'my-scroll-panel (word) and "my-scroll-panel" (quotes") also.... |
older newer | first last |