One of the goal of Spec is to be portable. But sadly, I am not an engineer working full time of Spec. Right now I have priorities which slow down Spec improvements.
But the infrastructure for having Spec portable is not so far Ben On Oct 12, 2012, at 11:28 PM, Pavel Krivanek wrote: > On Fri, Oct 12, 2012 at 10:45 AM, Stéphane Ducasse > <[email protected]> wrote: >> Pavel >> >> do you know VW spec, it is an array of symbol and spec is the same. >> We should change the api at some point. >> >> The point is that you do not code it by hand but that tools generate them. >> Now we are not to the point where a tools can generate them. >> >> But for us the OB is not the way to go because it is not flexible at all. > > OmniBrowser is not perfect. On the other hand I know about five > different UI frameworks that can display it (Morphic, Seaside, > SeasideXUL, Mars and Phobos). When I firstly heard about Spec, I > expected that the easy "portability" will be one of the main trait. To > create new platform for OmniBrowser is quite easy and as the result > you have almost complete Smalltalk IDE. Current Nautilus would not be > able to work on any UI different from Morphic even in case that Spec > would have full support there. > > With OmniBrowser or Glamour you create very high-level description of > the tools. It limits flexibility. But Spec is too low-level, it really > looks more like a layer that should make Morphic more friendly than > universal UI description of the tools. > SpecLayout seems to be more promising and I'm glad that Ben is working > on it. In some aspects it resembles Seaside/Phobos UI descriptions and > it would be really great if it would find some inspiration in that > world. > I am not impartial but I think that component based XUL subset with > Seaside-style description would promise good mix of readability, > flexibility, abstraction and portability. > > One way or another, if we want usable result, such layer should be > designed and created for several different UIs at once - including the > mobile ones. > > Cheers, > -- Pavel > > > >> Stef >> >> >>> Unfortunately it is not only about a layer between Morphic and Spec. >>> Whole Spec design is greatly conforming to Morphic. Check out Spec >>> definitions, they look almost like transcription of Morphic calls >>> >>> MethodToolbar class >> defaultSpec >>> <spec> >>> ^ { #Panel. >>> #changeTableLayout. >>> #listDirection:. #rightToLeft. >>> #addMorph:. {#model. #browseModel.}. >>> #addMorph:. {#model. #sendersModel.}. >>> #addMorph:. {#model. #implementorsModel.}. >>> #addMorph:. {#model. #versionModel. }. >>> #addMorph:. {#model. #dropListModel.}. >>> #hResizing:. #spaceFill. >>> #vResizing:. #shrinkWrap. } >>> >>> Of course these methods are implemented only in Morphic classes. Whole >>> layout management is directly taken from Morphic. And the Spec >>> definitions are unclear and hard to read. They are composed almost >>> solely from symbols so it is hard to work with and analyze them with >>> our development tools. We have such beautiful metalanguage where to >>> create DSL is so easy... >>> >>> In comparison with OmniBrowser the Spec is big step back. Sorry, I do >>> not want to be ugly but I started this impression when I was working >>> on Periscope and since that time it is deeper and deeper. >>> >>> Cheers, >>> -- Pavel >>> >>> >>> >>> >>> >>> On Thu, Oct 11, 2012 at 10:21 PM, Igor Stasenko <[email protected]> wrote: >>>> On 11 October 2012 20:52, Benjamin <[email protected]> >>>> wrote: >>>>> This method is actually the only one from ComposableModel with direct >>>>> Morphic binding :) >>>>> >>>>> >>>>> I am still trying to move that away, but I needed the rebuild to work >>>>> >>>> i think you can introduce own protocol (and put it as extension to >>>> morphic, if you want to) >>>> so, instead of saying >>>> >>>> widget removeAllMorphs >>>> >>>> you will use own extension method ,like: >>>> >>>> widget specRemoveAllChilds >>>> >>>> etc (spec here is namespacing prefix for a method, to indicate that it >>>> belongs to spec package >>>> and to indicate that it is a contract implied between spec and widget) >>>> >>>>> Ben >>>>> >>>>> On Oct 11, 2012, at 8:49 PM, Pavel Krivanek wrote: >>>>> >>>>>> Hi Ben, >>>>>> >>>>>> I really would like to write Spec binding for Phobos (Esteban will >>>>>> want to do it for Mars etc.). But, how to say that, Spec was not >>>>>> written with UI Independence in mind :-) Very basic example of that >>>>>> fact: >>>>>> >>>>>> ComposableModel>>buildWithSpec: aSpec >>>>>> "Build the widget using the spec name provided as argument" >>>>>> | widget | >>>>>> >>>>>> (self spec notNil and: [ self needRebuild not ]) >>>>>> ifTrue: [ | old | >>>>>> self needRebuild: true. >>>>>> old := self widget. >>>>>> old removeAllMorphs. >>>>>> self ensureExtentFor: old. >>>>>> widget := SpecInterpreter buildMorphFor: self >>>>>> withSpec: aSpec. >>>>>> widget submorphs do:[ :e | old addMorphBack: e ]. >>>>>> self spec instance: old. >>>>>> ^ old ] >>>>>> ifFalse: [ widget := SpecInterpreter buildMorphFor: self >>>>>> withSpec: aSpec. ]. >>>>>> >>>>>> self ensureExtentFor: widget. >>>>>> >>>>>> ^ widget >>>>>> >>>>>> Can you please do at least basic steps in the architecture of Spec to >>>>>> make it more independent on Morphic? >>>>>> >>>>>> Cheers, >>>>>> -- Pavel >>>>>> >>>>>> On Wed, Oct 10, 2012 at 12:10 AM, Benjamin >>>>>> <[email protected]> wrote: >>>>>>> It was part of my battle plan to rule the world ;) >>>>>>> >>>>>>> We wanted with Nico to part it to Amber to get the Javascript part for >>>>>>> free, then generate some XUL :) >>>>>>> >>>>>>> Anyway, really cool job, and impressive as well :) >>>>>>> >>>>>>> Ben >>>>>>> >>>>>>> On Oct 9, 2012, at 11:07 PM, Stéphane Ducasse wrote: >>>>>>> >>>>>>>> It looks really nice. >>>>>>>> I imagine that Spec could generate XUL too. >>>>>>>> >>>>>>>> Stef >>>>>>>> On Oct 9, 2012, at 9:48 PM, Pavel Krivanek wrote: >>>>>>>> >>>>>>>>> Hi all, >>>>>>>>> >>>>>>>>> I would like to introduce you Phobos - the XULRunner based Smalltalk >>>>>>>>> framework for development of native GUI with standard look&feel for >>>>>>>>> Linux, Mac OS X and Windows. >>>>>>>>> >>>>>>>>> It is based on Zinc, WebSockets and Seaside continuations. For more >>>>>>>>> information including more screenshots see the project page: >>>>>>>>> >>>>>>>>> http://code.google.com/p/phobos-framework/ >>>>>>>>> >>>>>>>>> You should pay attentions to FAQ too: >>>>>>>>> http://code.google.com/p/phobos-framework/wiki/FAQ >>>>>>>>> >>>>>>>>> Phobos has Seaside-like components and rendering style, can combine >>>>>>>>> XUL with HTML or SVG, supports printing etc. >>>>>>>>> >>>>>>>>> Cheers, >>>>>>>>> -- Pavel >>>>>>>>> <01.png> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> Best regards, >>>> Igor Stasenko. >>>> >>> >> >> >
