Skip to content
Robert B Colton edited this page Aug 12, 2016 · 5 revisions

Build status Issue Stats Issue Stats ![Gitter](https://badges.gitter.im/Join Chat.svg)

What is this?

Gemini is a WPF framework designed specifically for building IDE-like applications. It builds on some excellent libraries:

Gemini ships with two themes: a Light theme and a Blue theme. There is also an in-development Dark theme.

Screenshot - Light theme

Screenshot - Blue theme

What does it do?

Gemini allows you to build your WPF application by composing separate modules. This provides a nice way of separating out the code for each part of your application. For example, here is a very simple module:

[Export(typeof(IModule))]
public class Module : ModuleBase
{
	[Import]
	private IPropertyGrid _propertyGrid;

    public override IEnumerable<Type> DefaultTools
    {
        get { yield return typeof(IInspectorTool); }
    }

	public override void Initialize()
	{
		var homeViewModel = IoC.Get<HomeViewModel>();
		Shell.OpenDocument(homeViewModel);

		_propertyGrid.SelectedObject = homeViewModel;
	}

	private IEnumerable<IResult> OpenHome()
	{
		yield return Show.Document<HomeViewModel>();
	}
}

What modules are built-in?

Gemini itself is built out of seven core modules:

  • MainWindow
  • Shell
  • MainMenu
  • StatusBar
  • ToolBars
  • Toolbox
  • UndoRedo

Several more modules ship with Gemini, and are available as NuGet packages as described above:

  • CodeCompiler
  • CodeEditor
  • ErrorList
  • GraphEditor
  • Inspector
  • Inspector.MonoGame
  • Inspector.Xna
  • MonoGame
  • Output
  • PropertyGrid
  • SharpDX
  • Xna

For more information about these modules, see below. In general, each module adds some combination of menu items, tool window, document types and services.

What projects use Gemini?

I've used Gemini on several of my own projects:

Development dependencies

To build the XNA module and demo on your own machine, you'll need to install XNA 4.0 Game Studio.

Acknowledgements

  • Many of the original ideas, and much of the early code came from Rob Eisenberg, creator of the Caliburn Micro framework. I have extended and modified his code to integrate better with AvalonDock 2.0, which natively supports MVVM-style binding.
  • I used the VS2010 theme from Edi.

Gemini is not the only WPF framework for building IDE-like applications. Here are some others: