World: r3wp
[!REBOL3 GUI]
older newer | first last |
Cyphre 8-Mar-2011 [6690] | yup, Rebolek was right. |
Henrik 8-Mar-2011 [6691] | Maxim, this is necessary in HTML, because of the fixed naming of HTML tags. set-words in the R3 GUI do this. |
Pekr 8-Mar-2011 [6692] | But - it might be a bit different anyway. If you make b1: button, it is a set-word, a name. And now how do you use stylize, to refer to such a name? Stylize creates new style name, e.g. b1, but that is direct name for the style itself |
Henrik 8-Mar-2011 [6693x2] | in combination with style names, that is. |
Pekr, you don't stylize a singel face. you stylize a style and then create an instance of that style as a face. | |
Pekr 8-Mar-2011 [6695] | Henrik - but then ID != set-word |
Maxim 8-Mar-2011 [6696] | no henrik, its a completely different thing. you can use a class name for completely different classes. a button and an paragraph can share the same class name. and you can then affect them both in the same way. |
Pekr 8-Mar-2011 [6697] | stylize [ b1 button [] ] view [b1] differs to view [b1: button] |
Maxim 8-Mar-2011 [6698x2] | so classes are neither types nor serial IDs. |
(in html) | |
Henrik 8-Mar-2011 [6700] | Pekr, you are mixing up two things. The style name is not affected by the face name. |
Cyphre 8-Mar-2011 [6701] | yes, class in html is just an 'group-id' |
Maxim 8-Mar-2011 [6702] | classes in html/css really act as associative tags. in GLASS I am using #issue to simulate html class="label" |
Henrik 8-Mar-2011 [6703] | Maxim, I was talking about IDs, not classes. |
Maxim 8-Mar-2011 [6704x2] | though this is just something I've played with its probably going to stick, and multiple tags will be applicable to any control. |
ok, I guess I mis-interpreted the angle of one of your replies :-) | |
Pekr 8-Mar-2011 [6706] | Henrik - ok, so to be clear - show me possible stylize definition of a button variant, and how you refer to it in the layout code? |
Henrik 8-Mar-2011 [6707] | I suggest that classes in the R3 GUI is not useful for the reason that it interferes with the "intelligence" layer, where we already have: 1. tags to identify state and capability of a face, such as finding the default button in the window or whether the button is disabled. 2. name to identify a specific face 3. style name to identify the style and to create a distinct appearance 4. the ability to group faces by panels 5. have information about the ordering of faces stored in the face tree 6. use specific policies on how to act on a particular face with particular tags |
Robert 8-Mar-2011 [6708] | (good feature list. We should keep this.) |
Henrik 8-Mar-2011 [6709] | Pekr: stylize [my-button: button [facets: [text: "Pekr!"]]] view [my-button] |
Pekr 8-Mar-2011 [6710x4] | Henrik - you see? I just wanted to have a "button" inside of view, and by change of stylize parameter, to change some aspect of the button. But I might be mixing few things together. In your above example, my-button is a class. So your saying that in R3 GUI, classess are not usefull, is an incorrect statement, as we already do have classes? Or what you would call your 'my-button then? |
ad 1. I have a feeling, that we incorrectly mixed two things. TAGs, in my vocabulary or understanding, are "categorisation" elements. As for "state", there should be FLAGs, no? :-) | |
The feature list is not complete, we miss - 5a. ordering of faces for tabbing purpose | |
There is a slight discrepancy in the syntax of stylize and view. Not saying, that they should be identical, just a food for thought: stylize [my-button: button [facets: [text: "Pekr!"]]] view [ b1: my-button b2: button options [text: "Henrik!"] ] 1) 'Stylize could theoretically use the same syntax as 'view? So the code above could just be: stylize [my-button: button options [text: "Pekr!"] That would make it more (almost) compatible with the layout definition 2) Currently set-word inside the stylize defines a new style (class), whereas a set-word inside of 'view, defines a face name = ID. There is no simple way, of how to resolve that, maybe something like: stylize [ my-button: button options [text: "Pekr!"] button options [text: "Henrik!" name: b1] ; no set-word, so probably a problem syntaxwise. We simply can't style particular named face? ] view [ my-button b1: button] ; b1 kind of simulates ID, inherits from stylize definition Of course, it all depends how far do we want to go. We can introduce completly different semantics to the stylize function, even a complete selector behaviour from CSS, if there is a need .... | |
Henrik 8-Mar-2011 [6714x3] | So your saying that in R3 GUI, classess are not usefull, is an incorrect statement, as we already do have classes? Or what you would call your 'my-button then? - A style is not a class in the HTML sense, where you can apply a particular class to any tag. |
I just wanted to have a button" inside of view, and by change of stylize parameter, to change some aspect of the button." - the method I posted is exactly what you need to do in order to allow such a change. | |
There is a slight discrepancy in the syntax of stylize and view. - there should be, since they are not the same at all: stylize: func [ "Create one or more styles (with simple style dialect)." list [block!] "Format: name: [def], name: parent [def]" ... | |
TomBon 8-Mar-2011 [6717] | http://design.canonical.com/2011/03/introducing-overlay-scrollbars-in-unity/ |
Pekr 8-Mar-2011 [6718x3] | the method I posted is exactly what you need to do in order to allow such a change . Not sure - my idea was to use only "Button" name in the layout, not my-button, and diversify upon e.g. where the button is placed ... but otoh even in CSS/html, in most cases, you have to specify class or id, and hence my-button is kind of equivalent - you have to declare the special case. But - not sure all aspects of CSS are usefull to us. |
I will be glad, if we have system, where I can easily style elements, and configure their parameters. I'll wait how you resolve the FRAME style or simply borderless PANEL, GROUP, etc. | |
stylize - thanks for explaining to me, that the function is different, because it is different :-) | |
Henrik 8-Mar-2011 [6721] | the function is different, because it is different - it's different, because when you stylize, you make style objects. when creating layouts, you are creating faces. faces and styles are not the same kind of object. |
Pekr 8-Mar-2011 [6722] | what is the difference to state fields, in comparison to holding a value in the facet field? Are state fields meant to hold interim/computed values? Is there any usage rule? |
Henrik 8-Mar-2011 [6723] | guie/face: object [ ; Faces hold the state and options of instances of a style. style: ; WORD! - name of the style for this face facets: ; OBJECT! - properties unique to this face state: ; OBJECT! - state variables (not properties) gob: ; GOB! - graphical object(s) for this face options: ; OBJECT! - optional facet changes as specified tags: ; MAP! - tags for this face ; NOTE: optionally extended in face creation with: ;name ; WORD! - reference name ;reactors; BLOCK! - block of user actions ; PANEL faces also add: ;trigger-faces; BLOCK! - faces which reacts on triggers in panels ] |
Pekr 8-Mar-2011 [6724] | Cyphre - what will layout be good in next version? To preconstruct GUI, not displaying it? |
Cyphre 8-Mar-2011 [6725x2] | yes, mostlt...but you should be able to pass LAYOUT result to VEW function as well without any problem |
=mostly | |
Pekr 8-Mar-2011 [6727] | so we are going back to view layout [], or not necessarily, and layout is just a helper to prebuild a gui? |
Cyphre 8-Mar-2011 [6728x2] | it doesn't matter what way you use...even if you use view [...] the equivalent of 'layout function must be called internally |
so to clarify: you will be able to write view layout [...] OR view [...] , depends on you. | |
Ladislav 9-Mar-2011 [6730] | Hi, here is an R3-GUI poll once again: For the resizing purposes, all elements have MIN-SIZE and MAX-SIZE specifying the limits of resizing. It is easy to see, that, unless MIN-SIZE <= MAX-SIZE in both coordinates, the requirements are contradictory. (For example, if we set MIN-SIZE: 100x100 and MAX-SIZE: 50x50 for the same object.) Currently, the code does not trigger an error in such case (not having a built-in test for it), giving the priority to the MIN-SIZE. The poll question: What do you prefer to happen in case object MIN-SIZE and MAX-SIZE dimensions are contradictory? Do you think the current behaviour is acceptable, or do you want the code to always trigger an error, if conflicting requirements are given? |
GrahamC 9-Mar-2011 [6731] | the max of any x y should be used as max-size |
BrianH 9-Mar-2011 [6732x3] | I prefer that max-size have some meaning. So if the size is set outside of max-size, the size should be constrained to max-size. That is the whole point of having a max-size setting in the first place. If a style has a max-size setting below max-int/max-int it should be there for a reason, and max-size can be overriden explicitly in the layout so it doesn't constrain unnecessarily. |
As for whether min-size should trump max-size or vice-versa, I prefer min-size to trump max-size, or maybe even push up max-size. The min-size setting is usually more important for styles, since it often has to do with making the face larger than the smallest size of its contents. | |
Screen size probably should trump min-size though. | |
Maxim 9-Mar-2011 [6735] | it shoudn't be an error. popping errors in gui code is generally pretty evil if it can be prevented... its better for the gui to look weird than the interpreter to jam for an unknown reason. the possible layout screw-up will be incentive enough for the bug to be fixed. a logging system could help us identify where the engine "thinks" there might be problems... a debug switch which compiles warnings like this would be nice. |
Ladislav 9-Mar-2011 [6736] | So, currently it seems to me, that Graham's idea to set the MIN-SIZE to be the minimum of MIN-SIZE and MAX-SIZE and vice versa, to set the MAX-SIZE to be the maximum of the MIN-SIZE and MAX-SIZE is supported by BrianH as well, and, possibly, Max would support such a method too, based on the fact, that it does not "jam" the application. Count my vote too. |
BrianH 9-Mar-2011 [6737x2] | As long as they are actually set that way, sure. If they are left as they are and then just interpreted that way at runtime, that can get confusing. |
And the actual size should be constrained by min-size and max-size; setting the size outside that range should not push the limits outwards. | |
Ladislav 9-Mar-2011 [6739] | Yes, I indeed meant "actually set that way", but, probably, will use the method just for panel/group columns/rows. Whether I should cater for the dimensions of all objects as well is not decided yet, since the problem actually occurred for column width in a panel. |
older newer | first last |