Windows desktop plugin based widgets system written on WPF.
This application shows how to implement plugin based application and onscreen desktop widgets in WPF.
Requirements: .Net framework 3.5

MoonyDesk

There are only two widgets in alpha release: clock and weather widgets.

Preview
*click image to see full screenshot

Icons for weather widget from: http://merlinthered.deviantart.com/art/plain-weather-icons-157162192

Plugins for MoonyDesk

Each plugin must implement IPlugin interface from MoonyPlugin.dll.
Each plugin has it's name and UIElement that will appear on desktop.
Also plugin can contain settings tabs that will be loaded in settings window in main application (for example: clock hours format settings 12/24). Each plugin has default settings such as size, location, topmost, rotation angle. So there's no need to implement this settings.

IPlugin properties:
name - name of the plugin
DesktopElement - UIElemet that will be shown on desktop. This UIElement will be loaded as a content of DesktopWindow

IPlugin methods:
Initialize() – initialization method of the plugin
Dispose() – dispose method of the plugin. Will be called on disabling of the plugin
GetNewSettingsTabs() – returns list of SettingTabs. This method will be called on opening of SettingsWindow

Plugin class can contain fields that define default settings:
double DefaultTop - default Y position of the widget on the screen
double DefaultLeft - default X position of the widget on the screen
double DefaultSize - default size of the widget
bool DefaultTopmost - default value that indicates whether widget is topmost
bool DefaultMovable - default value that indicates whether widget is movable by mouse
double DefaultRotation - default rotation angle of the widget

MoonyDesk review:

http://www.instantfundas.com/2010/05/moonydesk-is-gorgeous-new-desktop.html by Kaushik

Last edited May 17, 2010 at 12:45 PM by shadowconsp, version 13