Gerardo I already told you that in the past. We do not need XAML.
in VW you have window spec and they are exactly the same without the need for 
XML

<Button>
<Button.Background>
<SolidColorBrush Color="Blue"/>
</Button.Background>
<Button.Foreground>
<SolidColorBrush Color="Red"/>
</Button.Foreground>
<Button.Content>
    This is a button
  </Button.Content>
</Button>


#(#{UI.ButtonSpec} 
                #layout: #(#{Graphics.LayoutFrame} 25 0.35 30 0 90 0.35 53 0 ) 
                #name: #newButton 
                #model: #newPattern 
                #label: #(#{Kernel.UserMessage} #key: #New #defaultString: 
'New' #catalogID: #pdp) 
                #defaultable: true ) 


in VW they use that since 1995 and this is working no need for XML.
You get a spec object and then you interpret it to populate the builder canvas.
Have a look at Builder design pattern because it is inspired from the UIBuilder 
class of Visualworks (or if this is not the case
this is exactly the pattern application). 

Here is a more complex example of a spec.

windowSpec
        "UIPainter new openOnClass: self andSelector: #windowSpec"

        <resource: #canvas>
        ^#(#{UI.FullSpec} 
                #window: 
                #(#{UI.WindowSpec} 
                        #label: #(#{Kernel.UserMessage} #key: 
#ContextListPolicyEditor #defaultString: 'Context list policy editor' 
#catalogID: #pdp) 
                        #min: #(#{Core.Point} 528 401 ) 
                        #max: #(#{Core.Point} 1024 768 ) 
                        #bounds: #(#{Graphics.Rectangle} 592 427 1120 828 ) 
                        #flags: 4 
                        #menu: #menuBar ) 
                #component: 
                #(#{UI.SpecCollection} 
                        #collection: #(
                                #(#{UI.LabelSpec} 
                                        #layout: #(#{UI.AlignmentOrigin} 0 
0.175 5 0 0.5 0 ) 
                                        #name: #PatternListLabel 
                                        #label: #(#{Kernel.UserMessage} #key: 
#Patterns #defaultString: 'Patterns' #catalogID: #pdp) ) 
                                #(#{UI.SequenceViewSpec} 
                                        #properties: 
                                        #(#{UI.PropertyListDictionary} 
#dragOkSelector 
                                                #wantToDrag: #dragEnterSelector 
                                                #dragEnter: #dragOverSelector 
                                                #dragOver: #dragStartSelector 
                                                #doDrag: #dropSelector 
                                                #drop: #dragExitSelector 
                                                #dragLeave: ) 
                                        #layout: #(#{Graphics.LayoutFrame} 2 0 
30 0 0 0.35 -60 1 ) 
                                        #name: #patternList 
                                        #model: #patternList 
                                        #menu: #menu 
                                        #useModifierKeys: true 
                                        #selectionType: #highlight ) 
                                #(#{UI.ActionButtonSpec} 
                                        #layout: #(#{Graphics.LayoutFrame} 25 
0.35 30 0 90 0.35 53 0 ) 
                                        #name: #newButton 
                                        #model: #newPattern 
                                        #label: #(#{Kernel.UserMessage} #key: 
#New #defaultString: 'New' #catalogID: #pdp) 
                                        #defaultable: true ) 
                                #(#{UI.ActionButtonSpec} 
                                        #layout: #(#{Graphics.LayoutFrame} 115 
0.35 30 0 180 0.35 53 0 ) 
                                        #name: #removeButton 
                                        #model: #removePattern 
                                        #label: #(#{Kernel.UserMessage} #key: 
#Remove #defaultString: 'Remove' #catalogID: #pdp) 
                                        #defaultable: true ) 
                                #(#{UI.InputFieldSpec} 
                                        #layout: #(#{Graphics.LayoutFrame} 13 
0.35 105 0 -9 0.75 128 0 ) 
                                        #name: #patternNameInput 
                                        #model: #patternName ) 
                                #(#{UI.ActionButtonSpec} 
                                        #layout: #(#{Graphics.LayoutFrame} 8 
0.75 105 0 87 0.75 128 0 ) 
                                        #name: #colorButton 
                                        #model: #selectColor 
                                        #label: #(#{Kernel.UserMessage} #key: 
#PickColor #defaultString: 'Pick Color' #catalogID: #pdp) 
                                        #defaultable: true ) 
                                #(#{UI.TextEditorSpec} 
                                        #layout: #(#{Graphics.LayoutFrame} 13 
0.35 160 0 -8 1 -155 1 ) 
                                        #name: #TextEditor1 
                                        #model: #patternString 
                                        #tabRequiresControl: true ) 
                                #(#{UI.LabelSpec} 
                                        #layout: #(#{Graphics.LayoutOrigin} 13 
0.35 85 0 ) 
                                        #name: #Label1 
                                        #label: #(#{Kernel.UserMessage} #key: 
#Name #defaultString: 'Name' #catalogID: #pdp) ) 
                                #(#{UI.LabelSpec} 
                                        #layout: #(#{UI.AlignmentOrigin} 0 
0.675 137 0 0.5 0 ) 
                                        #name: #Label3 
                                        #label: #(#{Kernel.UserMessage} #key: 
#PatternString #defaultString: 'Pattern String' #catalogID: #pdp) ) 
                                #(#{UI.GroupBoxSpec} 
                                        #layout: #(#{Graphics.LayoutFrame} 6 
0.35 65 0 -2 1 -145 1 ) 
                                        #name: #GroupBox1 
                                        #label: #(#{Kernel.UserMessage} #key: 
#Pattern #defaultString: 'Pattern' #catalogID: #pdp) ) 
                                #(#{UI.InputFieldSpec} 
                                        #layout: #(#{Graphics.LayoutFrame} 12 
0.35 -118 1 0 0.679924 -92 1 ) 
                                        #name: #matchSelectorInputField 
                                        #model: #matchSelector 
                                        #type: #symbol ) 
                                #(#{UI.InputFieldSpec} 
                                        #layout: #(#{Graphics.LayoutFrame} 6 
0.68 -118 1 -8 1 -92 1 ) 
                                        #name: #conversionSelectorInputField 
                                        #model: #conversionSelector 
                                        #type: #symbol ) 
                                #(#{UI.LabelSpec} 
                                        #layout: #(#{Graphics.LayoutOrigin} 12 
0.35 -137 1 ) 
                                        #name: #Label4 
                                        #label: #(#{Kernel.UserMessage} #key: 
#MatchSelector #defaultString: 'Match Selector' #catalogID: #pdp) ) 
                                #(#{UI.LabelSpec} 
                                        #layout: #(#{Graphics.LayoutOrigin} 6 
0.68 -137 1 ) 
                                        #name: #Label5 
                                        #label: #(#{Kernel.UserMessage} #key: 
#ConversionSelector #defaultString: 'Conversion Selector' #catalogID: #pdp) ) 
                                #(#{UI.ActionButtonSpec} 
                                        #layout: 
#(#{Graphics.LayoutSizedOrigin} -100 0.5 -33 1 80 23 ) 
                                        #name: #okButton 
                                        #model: #accept 
                                        #label: #(#{Kernel.UserMessage} #key: 
#Ok #defaultString: 'Ok' #catalogID: #pdp) 
                                        #defaultable: true ) 
                                #(#{UI.ActionButtonSpec} 
                                        #layout: 
#(#{Graphics.LayoutSizedOrigin} 20 0.5 -33 1 81 23 ) 
                                        #name: #cancelButton 
                                        #model: #cancel 
                                        #label: #(#{Kernel.UserMessage} #key: 
#Cancel #defaultString: 'Cancel' #catalogID: #pdp) 
                                        #defaultable: true ) 
                                #(#{UI.LabelSpec} 
                                        #layout: #(#{Graphics.LayoutOrigin} 12 
0.35 -82 1 ) 
                                        #name: #Label2 
                                        #label: #(#{Kernel.UserMessage} #key: 
#DisplayAllLimit #defaultString: 'Display all limit' #catalogID: #pdp) ) 
                                #(#{UI.SpinButtonSpec} 
                                        #layout: #(#{Graphics.LayoutFrame} 90 
0.35 -83 1 150 0.35 -60 1 ) 
                                        #name: #displayAllLimitField 
                                        #model: #displayAllLimit 
                                        #type: #number 
                                        #formatString: '0' 
                                        #low: 1 
                                        #high: 100 
                                        #interval: 1 ) 
                                #(#{UI.ActionButtonSpec} 
                                        #layout: #(#{UI.AlignmentOrigin} -10 1 
-10 1 1 1 ) 
                                        #name: #HelpButton 
                                        #model: #help 
                                        #label: #(#{Kernel.UserMessage} #key: 
#Help #defaultString: 'Help' #catalogID: #pdp) 
                                        #defaultable: true ) 
                                #(#{UI.DividerSpec} 
                                        #layout: #(#{Graphics.LayoutFrame} 0 0 
-48 1 0 1 -44 1 ) 
                                        #name: #Divider1 ) ) ) )

On Jun 30, 2010, at 3:35 PM, nullPointer wrote:

> 
>> I dont understand. If you dont know the difference why did you change 
>> from MIT to BSD for CLFramework?
> 
> No idea. I don´t know the change but you has warning me. The license is 
> already
> changed to MIT.
> 
>> Yes that would be good to know about the reasons. We know that you
>> were not satisfied with your own code - but who of us really is?
> 
> I believe the valid model for create a UIBUilder is implement something like 
> WPF
> in paint technology ( use OpenGL for paint and have 3D elements ) and XAML 
> build
> the UI in design time. I don´t have knowledges for implement that, and I don´t
> know if is possible implement something like that on Pharo-Smalltalk; but I
> believe that is needed for create something UIBuilder modern for
> Pharo-Smalltalk, and not based on old systems. But that task is for people 
> with
> more knowledges.
> 
> 
> _______________________________________________
> Pharo-project mailing list
> [email protected]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to