Hello!
This is my weekly ChangeLog, from 25 February 2019 to 3 March 2019. You can see it in a better format by going here: http://log.smallworks.eu/web/search?from=25/2/2019&to=3/3/2019 ChangeLog ========= 1 March 2019: ------------- * I have been working on introducing the concept of +Application+ to Spec2. An application is the entry point of... well, any application you will do with Spec2. It will contain information needed to make the application works in different contexts: 1) a theme 2) shared resources 3) the backend to use (Morphic) 4) access to standard dialogs, etc. (what now is found in UIManager). It is hard because it implies a lot of other refactors: * open/close of windows needs to pass through an application (to keep navigation working) * An application needs to be present on each window opened. * Windows needs to be the root of a presenter (and not just a holded variable in a ComposablePresenter) * Initialization of windows now is made by calling a method: #initializeWindow:, this was already added, but now we need to generalise it. * ... Anyway, this is a lot of work and is taking more than desirable :( 26 February 2019: ----------------- * Spec 2 day: 1) fix a bug in GridLayout: calculous of column width when columns is not homogeneous was bad because some morphs (labels, strings) needs to fit to contents (and it was not doing it). 2) Starting to introduce the concept of "Application": A window is not a good enough abstraction, we need to use also the concept of application (several windows interacting, sharing resources, theme, etc.). 25 February 2019: ----------------- * Today I made some advances in Spec2: 1) I worked on the transmissions mini-framework. The ability to make easy transmissions between components in Glamour was always something I liked it. So I did not want to lose it in the transition from Glamour to Spec2. I implemented a small layer on Spec presenters to be able to define input ports and output ports. That way you can define transmissions "glamour style", with full power of Spec behind. Someting like this is now possible: ---- packages := self newList displayBlock: #name. classes := self newList displayBlock: #name. self transmit from: packages; to: classes; transform: #definedClasses. ---- 2) Also, I added some functionality to allow to add arbitrary presenters to the new layouts. This is useful when doing forms, for example: you do not want to instantiate all the time a LabelPresenter to add a label. That way, you can now define things like this: ---- SpecGridLayout new columnHomogeneous: false; add: 'Name' at: 1@1; add: #nameTextInput at: 2@1; add: 'Host' at: 1@2; add: #hostTextInput at: 2@2; add: 'Port' at: 1@3; add: #portNumberInput at: 2@3; yourself ---- This will probably deserve a re-work later, but is already a lot better :) 3) I implementer a new type of presenter: +ActionBarPresenter+. This is similar to a toolbar, but its purpose is to add some actions (something like the small button pad you see in macOS and others). Since they do not serve same purpose, usability is not always the same and then they need to be separated. cheers! Esteban |
This is super cool and with native back-ends it will be super sexy :)
I’m eager to see the presentation of Spec2 at PharoDays. Which reminds me that we should create a new branch in the book. Stef > On 4 Mar 2019, at 08:00, [hidden email] wrote: > > Hello! > > This is my weekly ChangeLog, from 25 February 2019 to 3 March 2019. > You can see it in a better format by going here: http://log.smallworks.eu/web/search?from=25/2/2019&to=3/3/2019 > > ChangeLog > ========= > > 1 March 2019: > ------------- > > * I have been working on introducing the concept of +Application+ to Spec2. > An application is the entry point of... well, any application you will do with Spec2. It will contain > information needed to make the application works in different contexts: > 1) a theme > 2) shared resources > 3) the backend to use (Morphic) > 4) access to standard dialogs, etc. (what now is found in UIManager). > > It is hard because it implies a lot of other refactors: > > * open/close of windows needs to pass through an application (to keep navigation working) > * An application needs to be present on each window opened. > * Windows needs to be the root of a presenter (and not just a holded variable in a ComposablePresenter) > * Initialization of windows now is made by calling a method: #initializeWindow:, this was already added, but now we need to generalise it. > * ... > > Anyway, this is a lot of work and is taking more than desirable :( > > > 26 February 2019: > ----------------- > > * Spec 2 day: > > 1) fix a bug in GridLayout: calculous of column width when columns is not homogeneous was bad because > some morphs (labels, strings) needs to fit to contents (and it was not doing it). > > 2) Starting to introduce the concept of "Application": A window is not a good enough abstraction, we need > to use also the concept of application (several windows interacting, sharing resources, theme, etc.). > > > 25 February 2019: > ----------------- > > * Today I made some advances in Spec2: > > 1) I worked on the transmissions mini-framework. The ability to make easy transmissions > between components in Glamour was always something I liked it. So I did not want to lose > it in the transition from Glamour to Spec2. > > I implemented a small layer on Spec presenters to be able to define input ports and output > ports. That way you can define transmissions "glamour style", with full power of Spec behind. > > Someting like this is now possible: > > ---- > packages := self newList displayBlock: #name. > classes := self newList displayBlock: #name. > self transmit from: packages; to: classes; transform: #definedClasses. > ---- > > 2) Also, I added some functionality to allow to add arbitrary presenters to the new layouts. > > This is useful when doing forms, for example: you do not want to instantiate all the time a > LabelPresenter to add a label. That way, you can now define things like this: > > ---- > SpecGridLayout new > columnHomogeneous: false; > add: 'Name' at: 1@1; > add: #nameTextInput at: 2@1; > add: 'Host' at: 1@2; > add: #hostTextInput at: 2@2; > add: 'Port' at: 1@3; > add: #portNumberInput at: 2@3; > yourself > ---- > > This will probably deserve a re-work later, but is already a lot better :) > > 3) I implementer a new type of presenter: +ActionBarPresenter+. This is similar to a toolbar, > but its purpose is to add some actions (something like the small button pad you see in macOS and > others). Since they do not serve same purpose, usability is not always the same and then they need > to be separated. > > > cheers! > Esteban > |
Free forum by Nabble | Edit this page |