using System; using System.Collections.Generic; using Artemis.Core.Models.Profile; using Artemis.Core.Plugins.Abstract; using Artemis.Core.Plugins.Models; using Artemis.UI.Shared.Events; using Artemis.UI.Shared.PropertyInput; using Ninject; namespace Artemis.UI.Shared.Services.Interfaces { public interface IProfileEditorService : IArtemisSharedUIService { Profile SelectedProfile { get; } RenderProfileElement SelectedProfileElement { get; } TimeSpan CurrentTime { get; set; } int PixelsPerSecond { get; set; } IReadOnlyList RegisteredPropertyEditors { get; } IKernel Kernel { get; } void ChangeSelectedProfile(Profile profile); void UpdateSelectedProfile(); void ChangeSelectedProfileElement(RenderProfileElement profileElement); void UpdateSelectedProfileElement(); void UpdateProfilePreview(); void UndoUpdateProfile(ProfileModule module); void RedoUpdateProfile(ProfileModule module); void StopRegularRender(); void ResumeRegularRender(); Module GetCurrentModule(); /// /// Occurs when a new profile is selected /// event EventHandler ProfileSelected; /// /// Occurs then the currently selected profile is updated /// event EventHandler SelectedProfileUpdated; /// /// Occurs when a new profile element is selected /// event EventHandler ProfileElementSelected; /// /// Occurs when the currently selected profile element is updated /// event EventHandler SelectedProfileElementUpdated; /// /// Occurs when the current editor time is changed /// event EventHandler CurrentTimeChanged; /// /// Occurs when the pixels per second (zoom level) is changed /// event EventHandler PixelsPerSecondChanged; /// /// Occurs when the profile preview has been updated /// event EventHandler ProfilePreviewUpdated; /// /// Registers a new property input view model used in the profile editor for the generic type defined in /// /// Note: Registration will remove itself on plugin disable so you don't have to /// /// /// PropertyInputRegistration RegisterPropertyInput(PluginInfo pluginInfo) where T : PropertyInputViewModel; void RemovePropertyInput(PropertyInputRegistration registration); } }