World: r3wp
[!REBOL3-OLD1]
older newer | first last |
Pekr 19-Mar-2009 [12035] | Those wanting to influence VID resizing model - http://www.rebol.net/wiki/GUI_Face_Sizing |
Ammon 19-Mar-2009 [12036] | ---- Cross-posting from DevBase ----- window: view [t: text ""] window is set to a gob which is useless to me. t is totally lost and I can't modify it. What to do?!? |
Henrik 19-Mar-2009 [12037] | you can't modify 't outside the layout. binding stuff. |
Ammon 19-Mar-2009 [12038] | That doesn't make sense. Code that is not specifically *in* the layout can't modify faces/gobs/etc??? |
Anton 19-Mar-2009 [12039] | Don't be ridiculous. 't exists somewhere - so find out where. |
Henrik 19-Mar-2009 [12040] | Ammon, you can pass 't to a function used inside the layout, if you want. I'm genuinely not sure where in the system the face would be stored as I've not encountered a situation yet where that would be needed. |
Anton 19-Mar-2009 [12041x3] | Oh yes, looks like Ammon's right, actually. Each Face has a reference to its associated Gob, but the Gob does not have a reference to the Face. So if you only have the gob, you can't get to the face, where the variables like 't can be found. Just reading the source - correct me if I'm wrong. |
Yep, I remember I came across this before, and I didn't like this behaviour either. | |
It makes debugging and learning the system more difficult. | |
Henrik 19-Mar-2009 [12044] | I'm not sure it does. It's not meant to be poked and hacked like VID can be. You go through proper channels, because the proper channels are actually there now. :-) Also the built in debugging functions can provide a lot of information. |
Anton 19-Mar-2009 [12045] | not meant to be poked and hacked ===> yeah right ! :-) |
Henrik 19-Mar-2009 [12046] | Anton, the style actors, reactors SET-FACE, GET-FACE, SET-FACET and GET-FACET are there to affect the given face in the way it is intended to be, encapsulating the functionality in the right places, so no hacking is needed. You just create a new style with altered functionality, if you need it. |
Anton 19-Mar-2009 [12047] | no hacking is needed - this just seems naiive. |
Henrik 19-Mar-2009 [12048] | I guess you haven't tried working with VID3.4 then. |
Anton 19-Mar-2009 [12049x2] | You've obviously worked with it much more than me. |
(It's obvious to me, anyway. I haven't done that much except a few experiments and reading here and there.) | |
Henrik 19-Mar-2009 [12051] | I have, and the actors provide everything you need and you can be as elaborate as you need to be, process any events anywhere you like. There are even specific functions to override actors, in case you need to make a small addition to a big actor, when creating a derivative style. You can also create new actors. This is not much different from what VID3 had, except it's easier to program. |
Anton 19-Mar-2009 [12052] | Ok, so how would you modify Ammon's example so the text facet/gob can be inspected ? |
Henrik 19-Mar-2009 [12053x2] | the question is why he wants to inspect it. |
(in that, there may be a different, but just as good a method to do it) | |
Anton 19-Mar-2009 [12055] | Can you do it, or not ? |
Henrik 19-Mar-2009 [12056x2] | but other than that, enabling debugging lets you see the inner workings of a face |
http://rebol.net/wiki/GUI_howto_debug | |
Anton 19-Mar-2009 [12058] | So Ammon's example could be modified to: view [t: text "" debug] |
Henrik 19-Mar-2009 [12059] | yes |
Anton 19-Mar-2009 [12060] | which dumps the face contents. |
Henrik 19-Mar-2009 [12061] | also: view [t: text do [probe face]] dumps the gob as well. |
Anton 19-Mar-2009 [12062] | No, it doesn't (?) The gob is usually returned by VIEW and molded by the console.. |
Pekr 19-Mar-2009 [12063] | there is also whole instrumentation for debugging purposes, so ... |
Henrik 19-Mar-2009 [12064] | Anton, ah, it can't do that from a text label with nothing in it, of course. Try something like BUTTON instead. |
Anton 19-Mar-2009 [12065x3] | Custom debugging print outs. What if you just want to print the size of the TEXT face, for instance? |
How would you do that? (Not dump the whole face.) | |
Say, on init. | |
Henrik 19-Mar-2009 [12068x4] | Go to the style code and add the print there. |
(note that more debug outputs can be added, if some are needed) | |
I have a style that displays its current size inside the View window at all times. Perhaps this can be added as a debugging feature. | |
http://rebol.hmkdesign.dk/files/r3/gui/061.png | |
Pekr 19-Mar-2009 [12072x2] | debug: [style make] ? |
http://rebol.net/wiki/GUI_howto_debug#Runtime_Debug | |
Anton 19-Mar-2009 [12074] | Modifying the style code could be quite uncomfortable, when you just want some information quickly. I don't want to have to mess with files just to print a bit of custom debug info. More debug outputs could alleviate this discomfort somewhat. |
Henrik 19-Mar-2009 [12075] | I think it's possible to create a debug function that returns a facet for a given face when a given event happens, like: get-debug 'my-face 'text-body 'on-make |
Anton 19-Mar-2009 [12076] | Yes, you can use DO with BUTTON: view [t: text "hello" button do [dump-face t ]] dumps the TEXT face when the button is clicked. |
Pekr 19-Mar-2009 [12077] | Henrik - why don't you release your DocBase resizing doc? :-) |
Henrik 19-Mar-2009 [12078] | Pekr, because I know Carl will ignore it. In fact he just posted something like that on rebdev. |
Pekr 19-Mar-2009 [12079] | I think that nothing is set in stone, ne? It all started with the lack of decomposition from gob to face, no? Maybe the system could keep the list of references somewhere, no? Or simply face could be extended with the list of gobs it is composed from? |
BrianH 19-Mar-2009 [12080] | Gobs that are the top gob for a face have a reference to the face in something like gob/data, as I recall. |
Ammon 19-Mar-2009 [12081x2] | I want to get to 't because I'm trying to hack together a GUI for DevBase because the console client is painful to use and I thought this might be a good way to introduce myself to some of the internal workings of the new GUI. I want to redefine "say" in the chat.r to update ''t with the text it would normally print. To have changed what VIEW returns such that I can't actually get to the face produced is unbelievably confusing. There must be a good reason for it though, what is it? You do realize that if I have no way creating a pointer to a face then I can't use get-face, set-face, etc. on it don't you??? |
I'm familiar with the fact that set-words are being defined in parent-face/faces which is why I used window: view [...] I thought I was going to be looking in window/faces to get to t but View is giving me a gob instead of the face that I need. | |
Pekr 19-Mar-2009 [12083] | Will not it be more difficult to get to some internals anyway, once modules are implemented? |
Ammon 19-Mar-2009 [12084] | Yes, once modules are done certain internal things will be locked away but that has nothing to do with my question here. |
older newer | first last |