A couple of days ago, Johan Fabry did an amazing presentation about Spec and its key principle reuse.
Before I spoil the fun, go watch the video on YouTube.
The slides of the presentation can be found on SlideShare.
Thanks again Johan !
A couple of days ago, Johan Fabry did an amazing presentation about Spec and its key principle reuse.
Before I spoil the fun, go watch the video on YouTube.
The slides of the presentation can be found on SlideShare.
Thanks again Johan !
I am glad to announce a new major release for Spec .
ListModel
instances use an instance of MenuModel
as argument instead of a Morphic object. An example is provided in ListModel class>>#example
Spec-Tools
)SpecTableLayout
, thanks @webwarrior-ws In addition, some bug fixes and clean ups.
This version has been tested with Pharo 4.0 - build 167
Today, Spec is changing its license.
Until today, Spec was released under the MIT license.
But after a disagreement with the Pharo direction, and in order to keep control of Spec future it has been decided to change Spec license.
Now Spec is released under a dual license:
The discussions about Spec in the mailing list,
I came out with the idea that a tutorial
section
could be useful .
The first tutorial is about drag and drop.
Hope it will be hopeful.
Glad to announce that with the help of Sean P. DeNigris the problem of splitters in Spec has been tackled.
The problem was revealed when multiple morphs were present after a splitter. In this configuration the two morphs moved in a really strange way.
The fix provides a new algorithm to retrieve the morphs which should be attached to each splitters.
The fix should be into Pharo as soon as the slice is integrated.
Spec provides today a new missing feature: a menu toolbar.
As recently suggested in the mailing list, a menu toolbar is often a requirement to build an application. In order to provide an easy way to add a menu toolbar, Spec reuse MenuModel to generate the toolbar entries.
So now, a MenuModel can be used in two cases: to define a toolbar, or to define a contextual menu.
An example can be opened via
I am happy to announce that Benjamin Van Ryseghem and I finished the documentation of Spec for the Pharo For The Enterprise book. This documentation is up-to-date with the latest version of Spec, and is focused towards people wanting to use it and even extend it. We hope that this text will help all the people that are building UIs in Pharo, and it will clear up any doubts that they may have.
The chapter is available in source form from the GitHub project of the Pharo For The Enterprise book.
The easiest way to read the chapter is from the continuous integration server, which produces a html file of the chapter here.
We tried our best to make it understandable and complete, but if you have any doubts or comments please do not hesitate to let us know !! You can find the pier files on GitHub, where you can also report issues or propose fixes.
Now it's time to build some cool user interfaces!
PS from Ben: I would like to personally thank Sean P. DeNigris for his surprise pull requests.
After a cool sprint yesterday, a couple of Spec issues has been tackled .
Case 12695: Fix InputWidget example and add a new one. These examples are showing how to set up a window modality. Thanks Samir Saleh and Sean P. DeNigris for this fix.
Case 12683: The labels background is changing when the containing model is open as world (with openWorldWithSpec
).
Case 12684: Renaming NewValueHolder into ReactiveVariable. But since Pharo 3 is already in beta phase, changing the API was not possible. So instead two hooks were introduced to allow the integration of code from Spec bleeding edge to Pharo 3. For new code (and all code in future versions of Pharo), use the following two hook methods:
asReactiveVariable
: use wherever you would have used asValueHolder
, which will soon be deprecated. For now, it returns a NewValueHolder. In the future it will return a (polymorphic) ReactiveVariableselectionReactiveVariable
: as above, returns a SelectionValueHolder for now. This extension method allows the two different packages to coexist without having direct references from the Spec model.Thanks a lot Sean P. DeNigris for you help and energy.
Right now it is easy to prototype a UI in a workspace or to dynamically build a model on demand at run time, but this prototype can not be reused for composition.
Because of this, the prototyping is quite limited.
But the latest Spec commit introduces few changes on DynamicComposableModel
to tackle this issue.
The problem was double: no way to add an instanciated model as a sub widget, and the lookup for the layout was looking for a selector on class side.
The first problem was actually just a method missing since the DynamicComposableModel
class manage the widgets in a dictionary.
The second problem was slighty more tedious. To work, it requires from the embedded sub widget to have a layout defined. A new instance variable layout
has been introduce to hold the SpecLayout instance used to position the sub widgets. This way, when a layout is requested for the dynamic model, this layout is returned (regardless of the selector requested).
These two fixes add support for a better composition in the dynamic context .
If you want to try, this snippet gives you an example of how to build such unser interface.
I am glad to announce this super website dedicated to Spec and the things related to this cool framework .
You will find here the Spec documentation as well as a news feed about Spec progresses.
If you want to collaborate, the website can be found on .
Thank you all!