[Lazarus] IDEDialogLayoutList.ApplyLayout() is flawed

Mattias Gaertner nc-gaertnma at netcologne.de
Thu Jun 11 02:27:57 CEST 2009


On Wed, 10 Jun 2009 20:52:11 +0200
Hans-Peter Diettrich <DrDiettrich1 at aol.com> wrote:

> Mattias Gärtner schrieb:
> 
> > Windows that can stay open together with other IDE windows use at
> > the moment the EnvironmentOptions.IDEWindowLayoutList. But there is
> > no IDE interface for this, because this should be replaced by the
> > docking manager.
> > 
> > For example the idea of the anchor docking manager is, that every
> > window has a TLazControlDocker (just put one onto a form in the
> > designer). The rest is done by the docking manager. But I had not
> > the time to complete the restore algorithm and the recent changes
> > probably broke some parts.
> 
> I had a quick look at TLazControlDocker, but I don't understand how
> to use it.

Normally you just put it onto a form.
There must be one TLazDockingManager to which all TLazControlDocker are
connected. That's all. The rest is done automatically.

 
> > Maybe DoDi can outline what his docking manager requires. Maybe we
> > can then create an IDE interface for IDE windows.
> 
> I've not yet looked deeper into persistent layouts. IMO there should 
> exist a global registration instance, for all dockable components.
> Every such component registers itself, when it's created, just like a
> DockSite registers itself with the DragManager. It also should
> provide identifying information, that can be saved by an docking
> manager. On rebuild of a layout the manager should be able to create
> all components, that do not already exist. The creation sequence may
> be important, so that e.g. a Code Explorer can be created for and
> linked to a specific editor window, as the Delphi IDE can do.

Only those should be created that were open when the IDE was closed.
When a window is later opened by the user it would be nice if the
docking manager would put it there where it was when it was last time
opened.

 
> My next demo application will be an editor with multiple windows,
> where I can look deeper into details of saving and loading docking
> layouts. My docking notebook already allows to dock individual pages,
> so that multiple editor windows already are possible. As long as we
> don't have files with multiple viewers, another global manager will
> be required to prevent multiple concurrent edits of the same source,
> in multiple editor pages.


Mattias




More information about the Lazarus mailing list