[MonoDevelop] General purpose Toolbox and PropertyGrid

Michael Hutchinson m.j.hutchinson at gmail.com
Tue Apr 18 15:22:28 EDT 2006


On 4/18/06, Lluis Sanchez <lluis at ximian.com> wrote:
<snip>
> > generic toolbox object. There are also ComponentModel attributes and
> > other mecthanisms for identifying which designer hosts the items
> > should be visible for,
>
> Which attributes are those?

ToolboxItemFilterAttribute
(http://msdn2.microsoft.com/en-us/library/fh7ck1ye(VS.80).aspx)
has a filter string and a ToolboxItemFilterType enum. Depending on
whether the ToolboxItem and the IDesignerHost filter strings match,
the FilterType specifies how the visibility is affected. ToolboxItems
can then match multiple designers using quite complicated rules.

> > and we'll need this. My current sticking point
> > is wondering how best to serialise it to disk. A full XML/
> > object-based db for all designers' toolbox items could get big, but I
> > suspect SqlLite would be too heavy.
>
> Why do you need to serialize it to disk?

Custom controls: they do not need to be referenced in advance, as the
ToolboxItem is meant to be able to add a reference to the appropriate
assembly when it is used, using the ITypeResolutionService of the
IDesignerHost. We need to know which items in which assemblies have
been added to the Toolbox, so they can stay there until removed. In
addition, it would be useful to have enough information not to have to
load the relevant assemblies until they are needed.

Text snippets - I use them in AspNetEdit for simple HTML. I don't want
to keep them hardcoded, and I want users to be able to add new ones.

I also want to be able to attach a name, icon, description, keywords,
and other information to all of the items, including those that do not
wrap ToolboxItems (e.g. snippets) from which we can read the
attributes. Incidentally, there are more attributes (e.g. a
description) in .NET 2.0. Also want to override the icons that the
ASP.NET assembly doesn't have.

My approach so far is to have a ToolboxNode abstract class that
defines all the basic functionality needed, then a TextToolboxNode
that holds a text snippet, and a ToolboxItemToolboxNode that wraps a
ToolboxItem. I guess the next is a SteticToolboxNode :-)


Michael


More information about the Monodevelop-list mailing list