protected virtual void OnAddEffectClicked(object sender, System.EventArgs e)
        {
            // EVIL.  This makes sure the core assembly is loaded.  We should do
            // this better and only once.
            new OpenVP.Core.ClearScreen();

            Registry.Update();

            EffectSelectorDialog dialog = new EffectSelectorDialog();

            dialog.Modal        = true;
            dialog.TransientFor = (Window)this.Toplevel;

            if (dialog.Run() == (int)ResponseType.Ok)
            {
                Effect effect;

                try {
                    effect = (Effect)Activator.CreateInstance(dialog.SelectedEffect);
                } catch (Exception ex) {
                    Console.WriteLine(ex.ToString());
                    dialog.Destroy();
                    return;
                }

                lock (MainWindow.Singleton.RenderLock) {
                    this.mPreset.Effects.Add(effect);
                }

                this.mEffectStore.AppendValues(effect);
                this.CheckMovementButtons();
            }

            dialog.Destroy();
        }
		protected virtual void OnAddEffectClicked(object sender, System.EventArgs e) {
			// EVIL.  This makes sure the core assembly is loaded.  We should do
			// this better and only once.
			new OpenVP.Core.ClearScreen();
			
			Registry.Update();
			
			EffectSelectorDialog dialog = new EffectSelectorDialog();
			dialog.Modal = true;
			dialog.TransientFor = (Window) this.Toplevel;
			
			if (dialog.Run() == (int) ResponseType.Ok) {
				Effect effect;
				
				try {
					effect = (Effect) Activator.CreateInstance(dialog.SelectedEffect);
				} catch (Exception ex) {
					Console.WriteLine(ex.ToString());
					dialog.Destroy();
					return;
				}
				
				lock (MainWindow.Singleton.RenderLock) {
					this.mPreset.Effects.Add(effect);
				}
				
				this.mEffectStore.AppendValues(effect);
				this.CheckMovementButtons();
			}
			
			dialog.Destroy();
		}