[Mono-list] How to select a GUI implementation?

J. Perkins jason@379.com
Fri, 16 May 2003 14:00:29 -0400

Jonathan raises some good points. Does Mono have a .config file for 
system settings? Perhaps we could have an ordered list of GUI 
implementations, which an advanced user could change. The package 
builders could provide a list for the target platform (for example, the 
RH RPMS could specify Gtk, then Qt, then Wine perhaps, the Windows 
installer would just use a Win32 implementation). That would be more 
foolproof I think, since it allows for a fallback behavior in case the 
preferred toolkit isn't available, and it would not require any changes 
to the current build system.

Also, we should probably throw a NotImplementedException if no 
implementation is available for the current system.


Jonathan Pryor wrote:
> Type Reflector has two levels of support: compile-time and run-time.  By
> default, all front-ends are built.  If this fails (due to missing
> assemblies, e.g. Gtk# isn't installed), it'll fall-back and attempt to
> rebuild with a different set of front-ends.  The problem with this
> approach is it could result in a combinatoric explosion of build
> choices, but with only 2 "optional" front-ends (SWF & Gtk#) this isn't
> too bad.
> The next level is run-time selection.  Type Reflector uses an
> application configuration file (type-reflector.exe.config) which has an
> <appSettings/> tag, which contains a "displayer-order" key.  This key
> contains an ordering (space-delimited) of the front-ends to try to use. 
> An environment variable could be used instead.  At runtime, each entry
> is instantiated; the first displayer that instantiates is the one that
> is used.  This permits all GUI front-ends to fail, resulting in console
> output.