20120217 ======== Wednesday I started another avalanche of code changes. The triggering reason was that we wanted to define field sets and their labels in a form's layout, not on the model. Lino was under narcose for two days and now is waking up with some fundamental parts replaced by a shiny new approach. That's why we switch to version 1.4.0. lino.core.fields.FieldSet has been completely removed Detail Layouts are no longer defined in separate `.dtl` files, and not even in separate `.py` files, they are just defined in the code. One short-term disadvantage is that the "[Layout editor]" button is no longer possible since the definition can be more complex and spread across several source code files. But I'm dreaming about a new button "Show Source Code" that would open a "Source Code Inspector" with optional "Edit" buttons... Advantages: - There is now a comprehensible solution for defining labelled field groups - Using inheritance and writing "intelligent" layouts are now possible. Examples are :class:`lino.modlib.jobs.models.JobProviderDetail` and :class:`lino.apps.pcsw.models.CourseProviderDetail` who inherit from :class:`lino.apps.pcsw.models.CompanyDetail`. - For simple cases, e.g. :class:`lino.modlib.notes.models.EventType` it easier to just say:: detail_template = """ id name remark:60x3 notes.NotesByEventType:60x6 """ than to create a file :file:`/lino/modlib/notes/config/notes/Note/1.dtl` with basically the same content. Another side effect is that I finally found a solution for longterm layout bug. Here is how the detail of a note has been looking "from the beginning": .. image:: 0217a.jpg :scale: 50 Now it finally looks as it always should have : .. image:: 0217b.jpg :scale: 50