thanks for the info Nicolai, what I am trying to do is super simple, as you can see from the code I linked I have a very simple interface of a single button, I want to put before that button a simple morph to display color.
Basically the button changes the background color of windows and I want the morph to display the color. Morph wise i can create the Morph like this backgroundColorMorph := Morph new. backgroundColorMorph color: self backgroundColor. the problem is how I add this Morph to my gui. Meaning how to wrap it as spec widget which is what your code is doing. I was not aware of asSpecAdapter. Documentation does not mention this in Pharo for the Enterprise Spec Chapter. So following your instructions i added to my initialise method backgroundColorMorph := Morph new. backgroundColorWidget := backgroundColorMorph asSpecAdapter . I added a method to return backgroundColorWidget with the same name and changed at class side defaultSpec to defaultSpec <spec> ^ SpecLayout composed newRow: [:r | r add: #button width: 25. r add: #backgroundColorWidget] ; yourself I try to open the Spec gui and gives me a MNU Morph>>layout: Am I suppose to add some form of layout to the morph ? Do I need to add something to initialiseWidgets ? On Sun, Nov 16, 2014 at 12:36 PM, Nicolai Hess <nicolaih...@web.de> wrote: > 2014-11-16 10:02 GMT+01:00 kilon alios <kilon.al...@gmail.com>: > >> Hello guys I am trying to add a morph to spec gui before a spec button >> and the experience has been a nightmare so far. >> >> >> https://github.com/kilon/Nireas/blob/master/Nireas.package/Nireas.class/class/defaultSpec.st >> > > What do you mean "add a morph to spec gui". The common way is to define > your own model and instead of composing > your GUI with different morphs, you compose your GUI with different > (ready-made) models. If you need a new > kind of 1 model-GUI-Widget you'll have to define your own spec > (morphic)adapter and add a spec binding. > > If you just want to add an existing morph into your layout, you can use > Morphic>>#asSpecAdapter. > > This example looks a bit ugly, just because it uses a > DynamicComposableModel. In your own > applicatoin you would define your own model for defining and composing the > parts: > > > class:=AthensFlakeDemo. > method:=AthensFlakeDemo>>#initialize. > composed:= DynamicComposableModel new. > composed instantiateModels: #(code TextModel method TextInputFieldModel). > > "this is a hack, as #instantiateModels: does not work for non-spec-models" > composed widgets at:#demo put:(AthensFlakeDemo new asSpecAdapter). > > "with your own model (instead of using DynamicComposableModel) you would" > "define a method that returns the morph asSpecadapter " > > composed code text:method sourceCode. > composed method text: method selector asString. > composed code aboutToStyle:true. > composed code behavior:class. > composed title:(class asString). > composed openWithSpecLayout:( > SpecLayout composed > newColumn:[:r | r > add: #demo height:80; > add: #method height:25; > add: #code]; > yourself). > > > > > > > >> >> I understand how columns and rows work but I cant figure out how Spec >> works with Morphs. >> >> I took a look at CheckBoxExample but it completely jammed my brain how >> complex it looks. >> >> First of all defaultSpec2 is what ? and whats the diffirence with >> defaultSpec ? >> >> Dont know about you but I don't like neither name defaultSpec and >> defaultSpec2 , I would have chosen a name like layout or something that >> makes sense. >> >> also why we need to initializeWidgets when we already define their order >> in defaultSpec ? Why cant Spec initialise those widgets by itself ? >> >> Is it really necessary for each element of the gui to be defined as a >> getter method ? Why not just put everything to a dictionary and make a >> getter for that dictionary ? It would make a complex Spec gui a nightmare >> to browser and leads to braking it up to more classes which will still make >> it a mess to browse. >> >> I see also a container defined in there , I assume it has something to >> do with the morphs. >> >> I took also a look at documentation at Pharo for the Enterprise and it >> has a section for building widgets but it looks too much work to add just a >> few morph to a Spec gui. >> >> I wanted to make the gui for Nireas with Spec and I like some of its >> design but overall it has been way more struggle than working with Morphic. >> >> I know I have complained about Spec before and sorry if I sound like a >> broken tape but making guis in heavily gui based environment like Pharo >> should not be so hard. >> >> I dont have a problem failing back to Morphic but since I see so many >> people praise Spec I keep wondering if I approach this the wrong way and >> things are much more elegant and easy than they look. >> > >